В приложении Asp. Net Core Mvc с использованием. Net Core 3.0 я пытаюсь настроить глобальную обработку исключений с помощью app.UseExceptionHandler ("/ Error / Show"), но ошибка Контроллер никогда не попадает.
Если я использую:
public void Configure(
IApplicationBuilder app,
IWebHostEnvironment env,
ILoggerFactory loggerFactory,
IDataAccess dataAccess,
IHttpContextAccessor httpContextAccessor)
{
app.UseExceptionHandler("/Error/Show");
...
}
Контроллер ошибок показывает Действие никогда не срабатывает, как и конструктор контроллера ошибок.
Если я изменю код на:
public void Configure(
IApplicationBuilder app,
IWebHostEnvironment env,
ILoggerFactory loggerFactory,
IDataAccess dataAccess,
IHttpContextAccessor httpContextAccessor)
{
app.UseExceptionHandler(new ExceptionHandlerOptions
{
ExceptionHandler = async context =>
{
await context.Response.WriteAsync(Newtonsoft.Json.JsonConvert.SerializeObject(new
{
title = "An Error Occurred",
message = "The error was caught by UseExceptionHandler"
}));
}
});
...
}
Ожидаемый ответ возвращается, но я бы действительно хотел использовать ExceptionHandlingPath, чтобы я мог вернуть json, если запрос был сделан с использованием ajax и бритвы, если запрос был стандартным Get.
Я также пробовал использовать:
app.UseExceptionHandler(new ExceptionHandlerOptions
{
ExceptionHandlingPath = "/Error/Show"
});
, но это ведет себя так же, как app.UseExceptionHandler ("/ Error / Show")
Есть идеи, почему ExceptionHandlingPath не будет работать, но ExceptionHandler будет работать так, как ожидалось?