Страницы бритвы, глобальные обработчики исключений и кодовые страницы статуса - PullRequest
0 голосов
/ 19 февраля 2020

В приложении на основе 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);
                         }
                     });
                 }
                );

...