Я тестирую централизованную обработку исключений в моем приложении ASPNetCore и хотел посмотреть, будет ли возникать непредвиденное исключение, оно будет правильно обработано промежуточным программным обеспечением app.UseExceptionHandler () и зарегистрировано для определенной цели ведения журнала. Я отключил базу данных SQL, ожидающую увидеть метод Database.EnsureCreated () в конструкторе класса DbContext, выдавая исключение System.Data.SqlClient.SqlException. Проблема заключается в том, что оно выдает такое исключение, но оно появляется локально, а не обрабатывается центробежным обработчиком ошибок. В результате клиент никогда не получает ответного сообщения, объясняющего, что произошло с кодом состояния 500.
Это кажется странным, так как обработчик работает правильно, за исключением того, что я выкидываю внутри контроллеров.
Вот моя централизованная конфигурация обработчика исключений:
app.UseExceptionHandler(appError =>
{
appError.Run(async context =>
{
var errorFeature = context.Features.Get<IExceptionHandlerFeature>();
if (errorFeature != null)
{
var exception = errorFeature.Error;
logger.LogError(exception.ToString());
await context.Response.WriteAsync("An unexpected error occurred! Try again later");
}
});
});
Может кто-нибудь сказать мне, дать мне подсказку о том, что я могу делать неправильно? Кто-нибудь сталкивался с подобной проблемой?