Udostępnij za pośrednictwem


Oprogramowanie pośredniczące: Oprogramowanie pośredniczące programu obsługi wyjątków zgłasza oryginalny wyjątek, jeśli program obsługi nie został znaleziony

Przed ASP.NET Core 5.0 oprogramowanie pośredniczące programu obsługi wyjątków wykonuje skonfigurowaną procedurę obsługi wyjątków po wystąpieniu wyjątku. Jeśli nie można odnaleźć programu obsługi wyjątków skonfigurowanego za pomocą metody ExceptionHandlingPath, zostanie utworzona odpowiedź HTTP 404. Odpowiedź jest myląca w tym, że:

  • Wydaje się być błędem użytkownika.
  • Ukrywa fakt, że na serwerze wystąpił wyjątek.

Aby rozwiązać błąd wprowadzający w błąd w ASP.NET Core 5.0, zgłasza oryginalny wyjątek, ExceptionHandlerMiddleware jeśli nie można odnaleźć programu obsługi wyjątków. W rezultacie odpowiedź HTTP 500 jest generowany przez serwer. Odpowiedź będzie łatwiejsza do zbadania w dziennikach serwera podczas debugowania błędu, który wystąpił.

Aby zapoznać się z dyskusją, zobacz problem z usługą GitHub dotnet/aspnetcore#25288.

Wprowadzona wersja

5.0 RC 1

Stare zachowanie

Oprogramowanie pośredniczące programu obsługi wyjątków generuje odpowiedź HTTP 404, jeśli nie można odnaleźć skonfigurowanego programu obsługi wyjątków.

Nowe zachowanie

Oprogramowanie pośredniczące programu obsługi wyjątków zgłasza oryginalny wyjątek, jeśli nie można odnaleźć skonfigurowanego programu obsługi wyjątków.

Przyczyna wprowadzenia zmiany

Błąd HTTP 404 nie sprawia, że na serwerze wystąpił wyjątek. Ta zmiana generuje błąd HTTP 500, aby było oczywiste, że:

  • Problem nie jest spowodowany błędem użytkownika.
  • Wystąpił wyjątek na serwerze.

Brak zmian interfejsu API. Wszystkie istniejące aplikacje będą nadal kompilowane i uruchamiane. Zgłoszony wyjątek jest obsługiwany przez serwer. Na przykład wyjątek jest konwertowany na odpowiedź błędu HTTP 500 przez Kestrel lub HTTP.sys.

Dotyczy interfejsów API

Brak