В приложении на основе Razor Pages есть способ, с помощью которого мы можем настроить глобальную обработку исключений и использование кодовых страниц состояния, чтобы, если глобальный обработчик исключений устанавливает статус HttpResponse для данного значения, то соответствующая страница будет вызываться настроенное расположение кодовых страниц состояния?
В методе Configure
моего класса запуска я пробовал различные варианты следующего. Вместо этого я также попробовал ExceptionFilter, но не могу установить код ошибки в моем ExceptionHandler и правильно отображать страницу состояния.
app.UseStatusCodePagesWithReExecute("/ErrorPages/{0}");
app.UseExceptionHandler(
options => {
options.Run(
async context =>
{
var ex = context.Features.Get<IExceptionHandlerFeature>();
if (ex != null)
{
// Following simply returns default browser pages for given status
// codes, rather than /ErrorPages/403 or /ErrorPages/404
var exceptionType = ex.Error.GetType();
if (exceptionType == typeof(ForbiddenException))
{
context.Response.StatusCode = (int) HttpStatusCode.Forbidden;
}
else if (exceptionType == typeof(ItemNotFoundException))
{
context.Response.StatusCode = (int)HttpStatusCode.NotFound;
}
await context.Response.WriteAsync(string.Empty).ConfigureAwait(false);
}
});
}
);