Я хотел бы отображать пользовательские страницы для ошибок в моем приложении ASP Core 2.0 MVC.Но я могу добиться этого только для некоторых типов ошибок.
По умолчанию ошибка 404 выглядит следующим образом:
Я считаю, что правильный способ отловить и настроить ошибки, такие как 404(не найдено) в приложении ASP Core 2.0 - использовать промежуточное ПО app.UseStatusCodePages () в Configure () в Startup.cs.Я сделал это, или, более конкретно, я использовал app.UseStatusCodePagesWithReExecute (), так как я хотел создать свои собственные страницы ошибок.
app.UseStatusCodePagesWithReExecute("/Error/Index", "?statusCode={0}");
Теперь, когда я просматриваю ресурс, который не существует, я вижу свое пользовательское сообщение об ошибке, так как код успешно перехватывает ошибку 404:
Хорошо, похоже, это работает.
Однако затем я попытался перейти к https://localhost:44300/Startup.cs
Это дает мнеошибка 404.7, предположительно потому, что пользователю никогда не должно быть позволено перейти к этому файлу.Что еще более важно, Я не вижу свою страницу ошибки на этот раз .Вместо этого я вижу страницу, которая выглядит так, как будто она была сгенерирована сервером.
У меня есть несколько вопросов, связанных с этим:
Почему это происходит?Когда я использовал app.UseStatusCodePages (), почему эта ошибка 404.7 не перехватывается промежуточным программным обеспечением так же, как ошибка 404?
Где генерируется эта ошибка?У меня такое ощущение, что это генерируется настройками сервера IIS, так как сама ошибка говорит, что я должен проверить настройки в applicationhost.config или web.config.
Но (i) в приложении ASP Core 2.0 нет файла web.config, поэтому я не вижу, откуда взялись эти настройки, и (ii) я считаю, что ASPCore 2.0 использует Kestral, а не IIS, и я не вижу никаких настроек Kestral в моем приложении.
Что я могу сделать, чтобы заменить эту страницу ошибки моей собственной настроенной страницей ошибок, так же, как я сделал с ошибками 404?