ServiceStack не заполняет ответ DTO при выдаче HttpErrors - PullRequest
1 голос
/ 02 мая 2019

ServiceStack не заполняет исходный ответ в свойстве responseDTO WebServiceException.

Я запускаю приведенный ниже код, который всегда должен возвращать код ответа 404 со свойством ResponseStatus TestResponse, заполненным «Некоторым неверным запросом», но также кажется, что должно возвращаться исходный хороший ответ с его выходным свойством, заполненным из свойство ввода запроса. Однако я получаю нулевое значение, когда смотрю на ответ WebServiceException DTO

        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;
            }
        }

В общем, я ожидал, что свойство responseDTO в WebServiceException будет содержать DTO конечной точки, пока оно передается при вызове HttpError, но, похоже, это не так. Я вижу только значения по умолчанию и значения NULL для каждого свойства в responseDTO.

1 Ответ

2 голосов
/ 02 мая 2019

Когда выдается исключение, сохраняется только ResponseStatus, вы можете добавить любую дополнительную информацию в его словарь Meta.

В качестве альтернативы вы можете вернуть ошибочный HTTP-ответ :

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

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