Поделиться через


ПО промежуточного слоя: ПО промежуточного слоя обработчика исключений создает исходное исключение, если обработчик не найден

В версиях, предшествующих ASP.NET Core 5.0, ПО промежуточного слоя обработчика исключений выполняет настроенный обработчик исключений при возникновении исключения. Если обработчик исключений, настроенный с помощью ExceptionHandlingPath, не найден, создается ответ HTTP 404. Ответ является ошибочным в том, что:

  • Ошибка, похоже, вызвана пользователем.
  • Сообщение не отображает тот факт, что на сервере произошло исключение.

Чтобы устранить ошибку, возникшую в ASP.NET Core 5.0, ExceptionHandlerMiddleware создает исходное исключение, если не удается найти обработчик исключений. В результате на сервере создается ответ HTTP 500. Ответ будет проще изучить в журналах сервера при отладке возникшей ошибки.

Обсуждение этого вопроса см. на странице GitHub dotnet/aspnetcore#25288.

Представленные версии

5.0 RC 1

Старое поведение

ПО промежуточного слоя обработчика исключений создает ответ HTTP 404, если не удается найти настроенный обработчик исключений.

Новое поведение

ПО промежуточного слоя обработчика исключений создает исходное исключение, если не удается найти настроенный обработчик исключений.

Причина изменения

Ошибка HTTP 404 не позволяет понять, что на сервере возникло исключение. Это изменение выдает ошибку HTTP 500, чтобы сделать это очевидным:

  • Проблема не вызвана ошибкой пользователя.
  • На сервере обнаружено исключение.

Изменения в API не требуются. Все существующие приложения будут по прежнему компилироваться и выполняться. Созданное исключение обрабатывается сервером. Например, исключение преобразуется в ответ об ошибке HTTP 500 Kestrel или HTTP.sys.

Затронутые API

Нет