Я использую MVC 5 и имею ExceptionFilterAttribute, который я использую, чтобы перехватывать ошибки в моем приложении и пересылать их как HttpResponseException с кодом состояния Http 500.
throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError)
{
ReasonPhrase = ReplaceNewLinesWithBreaks(reasonPhrase),
Content = (entityErrors.Count > 0 ? (new StringContent(Json.Encode(new { EntityErrors = entityErrors }))) : null)
});
У меня проблема в том, что в некоторых средах IIS, похоже, удаляет ошибку из ответа.
Я пробовал несколько вещей, таких как установка TrySkipIisCustomErrors = true;
, но, похоже, ничего не изменилось.
Должно быть где-то разница в конфигурации, но я не знаю, в чем проблема.
РЕДАКТИРОВАТЬ: Еще раз посмотрев на нее, причина фраза, которая удаляется. У меня есть подозреваемый, это может быть связано с активированным http / 2.0.
РЕДАКТИРОВАТЬ 2: Это был активированный http / 2.0, который вызвал мою проблему. Вместо того, чтобы получать заголовок статуса, такой как:
500 An error has occurred
с http / 2.0, вы не получите текст статуса (часть http / 2.0 spe c, я считаю) и вместо этого вы просто получаете код состояния. т.е.:
500