Показать пользовательскую страницу ошибки для 404.7. UseStatusCodePages () не работает - PullRequest
0 голосов
/ 16 мая 2018

Я хотел бы отображать пользовательские страницы для ошибок в моем приложении ASP Core 2.0 MVC.Но я могу добиться этого только для некоторых типов ошибок.

По умолчанию ошибка 404 выглядит следующим образом:

404 error

Я считаю, что правильный способ отловить и настроить ошибки, такие как 404(не найдено) в приложении ASP Core 2.0 - использовать промежуточное ПО app.UseStatusCodePages () в Configure () в Startup.cs.Я сделал это, или, более конкретно, я использовал app.UseStatusCodePagesWithReExecute (), так как я хотел создать свои собственные страницы ошибок.

app.UseStatusCodePagesWithReExecute("/Error/Index", "?statusCode={0}");

Теперь, когда я просматриваю ресурс, который не существует, я вижу свое пользовательское сообщение об ошибке, так как код успешно перехватывает ошибку 404:

Customized 404 error

Хорошо, похоже, это работает.

Однако затем я попытался перейти к https://localhost:44300/Startup.cs

Это дает мнеошибка 404.7, предположительно потому, что пользователю никогда не должно быть позволено перейти к этому файлу.Что еще более важно, Я не вижу свою страницу ошибки на этот раз .Вместо этого я вижу страницу, которая выглядит так, как будто она была сгенерирована сервером.

404.7 error

У меня есть несколько вопросов, связанных с этим:

  1. Почему это происходит?Когда я использовал app.UseStatusCodePages (), почему эта ошибка 404.7 не перехватывается промежуточным программным обеспечением так же, как ошибка 404?

  2. Где генерируется эта ошибка?У меня такое ощущение, что это генерируется настройками сервера IIS, так как сама ошибка говорит, что я должен проверить настройки в applicationhost.config или web.config.

Но (i) в приложении ASP Core 2.0 нет файла web.config, поэтому я не вижу, откуда взялись эти настройки, и (ii) я считаю, что ASPCore 2.0 использует Kestral, а не IIS, и я не вижу никаких настроек Kestral в моем приложении.

Что я могу сделать, чтобы заменить эту страницу ошибки моей собственной настроенной страницей ошибок, так же, как я сделал с ошибками 404?

1 Ответ

0 голосов
/ 16 мая 2018

RequestFiltering - это функция безопасности IIS, которая блокирует ваши запросы и отображает это сообщение. Когда вы пытаетесь отлаживать основные приложения asp.net, kestrel используется автоматически с использованием IIS. Если вы хотите обойти IIS и использовать kestrel напрямую в качестве автономного сервера, это можно сделать в Visual Studio, нажав кнопку со стрелкой вниз enter image description here рядом с IIS Express и выбрав имя проекта в раскрывающемся списке. , Если вы выполните отладку сейчас, откроется окно консоли, в котором сервер kestrel работает как автономное приложение.

Kestrel не является полнофункциональным веб-сервером, и в производственной среде вы обычно запускаете его вместе с другим сервером, таким как IIS или Nginx, который будет действовать как обратный прокси-сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...