【发布时间】:2014-05-12 17:05:16
【问题描述】:
我已经使用 ServiceStack 几个月了。它已经运行了一段时间,我使用了许多高级方法和 Redis 集成。我有许可证,所以我的问题与许可证问题无关,但我想知道它是否相关。看起来我已经达到了最大 DTO 或路径,但我没有收到任何此类错误,只是“未找到请求的处理程序”。所以这是我的问题:你如何调试和隔离这个错误?我已经阅读了所有我能找到的关于 DTO 和 DTO 过滤器的正确格式的帖子,而且我已经做了足够长的时间,在这方面我看不出有什么问题。相同样式的 DTO 和路径有效,但新的失败,或者看起来如此。即使我发现我在 DTO 设置中做错了什么,问题仍然存在,有没有办法调试它?当然,如果是这样的话,找出我做错了什么是第一个问题。
这是我的代码,首先是 AppHost:
.Add<UsersCredentials>("/userscredentials", "GET")
.Add<UserCredential>("/userscredentials", "DELETE")
.Add<UserCredential>("/userscredentials/{UserName}", "POST PUT DELETE")
.Add<UserCredential("/userscredentials/{UserName}/(Permissions}/{System}/{ParamSet}/{Instrument}/{Interval}", "POST PUT DELETE")
DTO:
[Route("/userscredentials", "GET")]
public class UsersCredentials : IReturn<UsersCredentials>
{
public string UserName { get; set; }
public string Permissions { get; set; }
public string System { get; set; }
public uint ParamSet { get; set; }
public string Instrument { get; set; }
public uint Interval { get; set; }
} //Request DTO
[Route("/userscredentials", "DELETE")]
[Route("/userscredentials/{UserName}", "POST PUT DELETE")]
[Route("/userscredentials/{UserName}/(Permissions}/{System}/{ParamSet}/{Instrument}/{Interval}", "POST PUT DELETE")]
public class UserCredential : IReturn<UserCredential>
{
public string UserName { get; set; }
public string Permissions { get; set; }
public string System { get; set; }
public uint ParamSet { get; set; }
public string Instrument { get; set; }
public uint Interval { get; set; }
} //Request DTO
和服务:
// UsersCredentials
public class UsersCredentialsResponse
{
public string Result { get; set; }
public ResponseStatus ResponseStatus { get; set; } //Where Exceptions get auto-serialized
}
public class UsersCredentialsService : Service
{
private bool init = false;
public object Get(UsersCredentials request)
{
return (request);
}
public object Post(UserCredential request)
{
return request;
}
public object Put(UserCredential request)
{
return request;
}
public void Delete(UserCredential request)
{
}
}
我使用“POSTMAN”进行调试并将其作为 POST 发送:
http://sun:1300/userscredentials/a?format=json
它有效。然后我作为 POST 发送:
http://sun:1300/userscredentials/a/b/c/1/d/2?format=json
并得到“未找到请求的处理程序:Request.HttpMethod:POST Request.PathInfo:/userscredentials/a/b/c/1/d/2 Request.QueryString:format=json Request.RawUrl:/userscredentials/ a/b/c/1/d/2?format=json"
【问题讨论】:
标签: servicestack