免责声明:我对 ServiceStack 还很陌生
鉴于以下服务:
public class TestService : Service
{
public TestResponse Get(Test request)
{
if (String.IsNullOrEmpty(request.Message))
throw new ArgumentException("Message is required");
return new TestResponse();
}
}
以及以下请求/响应 DTO:
[Route("/test", "GET")]
public class Test : IReturn<TestResponse>
{
public string Message { get; set; }
}
public class TestResponse
{
public IList<Test> TestList { get; set; }
}
当我尝试访问/test时,我希望得到以下响应:
{
"responseStatus": {
"errorCode": "ArgumentException",
"message": "Message is required",
"errors": []
}
}
相反,我得到一个空的 JSON 响应。然而,它返回了正确的状态码(400 Bad Request)。
我认为在 ServiceStack 中以这种方式命名你的 DTO 是很常见的,先是Something,然后是SomethingResponse。为了让它将异常作为序列化的 ResponseStatus 对象返回,我发现我可以将我的请求 DTO 从 Test 重命名为 TestRequest 和/或在我的响应 DTO 中包含一个 ResponseStatus 属性。
这是预期的行为吗?
更新
我应该指出,仅当我的响应 DTO 的名称以 Response 结尾(区分大小写)时才会出现问题。如果我的请求/响应 DTO 分别称为 Foo 和 Bar,我会收到格式正确的 JSON 响应,其中包含错误。