У меня есть ASP.NET WebAPI (v2) действия контроллера, который имеет следующую общую структуру:WebAPI BadRequest каплепадения Response Data
[HttpPost]
public HttpResponseMessage Post(UserDTO model)
{
try {
// do something
}
catch (Exception ex)
{
var error = new {
errorMessage = ex.Message,
userId = 123,
// some other simple data
};
return Request.CreateResponse(HttpStatusCode.BadRequest, error);
}
return Request.CreateResponse(HttpStatusCode.OK, model);
}
Когда я бегу это на моем локальном сервере разработки (IIS Экспресс) и возникает ошибка, я получаю ожидаемую полезную нагрузку JSON.
{
config: {...},
data: {
errorMessage: "User invalid",
userId: 123,
...
},
status: 400,
statusText: "Bad Request"
}
Когда я запускаю тот же код/данные на удаленном сервере/производства (IIS 8.5), все, что я вернусь есть:
{
config: {...},
data: "Bad Request,
status: 400,
statusText: "Bad Request"
}
Обычай data
полезная нагрузка теряется/отбрасываются от ответ. Этот появляется, относящийся к HttpStatusCode
, используемый в Request.CreateResponse()
, как будто я меняю HttpStatusCode.BadRequest
на HttpStatusCode.OK
, после чего загружается пользовательская информация.
Как я могу проверить, я попытался изменить возвращение к Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
, но результаты были одинаковыми, то есть данные были возвращены в качестве простого «Bad Request» строки.
Для справки API вызывается вызовом AngularJS $http.post()
.
Почему изменение в HttpStatusCode
изменяет полезную нагрузку на рабочем сервере, но не локально? Любая помощь приветствуется.
Извините за этот немой вопрос, но я должен спросить - Вы абсолютно уверены в том, что ответ исходит из этого исключения? IIS и Express имеют разные стеки процессов, поэтому исключение может быть из других источников. В IIS запустите с помощью Failed Request Trace, чтобы помочь найти точку исключения –
Если это глупо, я просто задал себе одно и то же :-) Да, я думаю, что это так, но ... Похоже, что это связано с обработка ошибок, используемая на веб-сайте производства. Если я вычеркнул из , тогда данные вернутся правильно. Итак, поскольку это смешанное приложение MVC/WebAPI, то, наверное, мой вопрос заключается в том, как избежать использования обработчиков ошибок по умолчанию для вызовов WebAPI? –
Neilski