servicestack,Error Handling,servicestack" /> servicestack,Error Handling,servicestack" />

Error handling ServiceStack没有';t在抛出HttpErrors时填充响应DTO

Error handling ServiceStack没有';t在抛出HttpErrors时填充响应DTO,error-handling,servicestack,Error Handling,servicestack,ServiceStack不会在WebServiceException的responseDTO属性中填充原始响应 我正在运行下面的代码,它应该总是返回404响应代码,TestResponse的ResponseStatus属性填充了“Some bad request”,但它似乎也应该返回原始的好响应,其输出属性填充了请求的input属性。但是,当我查看响应到的WebServiceException时,会得到null public TestResponse Post(Test requ

ServiceStack不会在WebServiceException的responseDTO属性中填充原始响应

我正在运行下面的代码,它应该总是返回404响应代码,TestResponse的ResponseStatus属性填充了“Some bad request”,但它似乎也应该返回原始的好响应,其输出属性填充了请求的input属性。但是,当我查看响应到的WebServiceException时,会得到null

        public TestResponse Post(Test request)
        {
            var response = new TestResponse() { Output = request.Input };

            throw new HttpError(response, (int)HttpStatusCode.BadRequest, "Some bad request");
        }

        public TestResponse Get(Test request)
        {
            try
            {
                using (var client = new JsonServiceClient("http://localhost:5000"))
                {
                    var response =  client.Post(request);
                    return response;
                }
            }
            catch (WebServiceException ex)
            {

                throw;
            }
        }

一般来说,我希望WebServiceException中的responseDTO属性将包含端点的DTO,只要它在抛出HttpError时传入,但情况似乎并非如此。我在responseDTO中只看到每个属性的默认值和空值。

当抛出异常时,只保留
ResponseStatus
,您可以将任何其他信息添加到其
字典中

或者,您可以:


我懂了。我就是这么想的。在这种情况下,如果responseDTO的属性始终为null/default,那么它的用途是什么?为什么HttpError采用响应参数?@NikoYakimov响应包含ResponseStatus,它是所有服务错误响应的错误DTO,包含所有其他错误过滤器操作的结构化错误响应。如果你想返回其他信息,请返回错误响应,不要抛出它。太好了。看来这样行得通。谢谢你的快速回答!
public TestResponse Post(Test request)
{
    var response = new TestResponse() { Output = request.Input };

    base.Response.StatusCode = (int)HttpStatusCode.BadRequest;
    return response;
}