Ниже я использую промежуточное программное обеспечение для настройки страниц ошибок для кодов состояния HTTP от 400 до 599. Таким образом, посещение /error/400
показывает страницу с ошибкой 400 запросов.Отображение страницы 404 не найденной для ASP.NET Core MVC 6
application.UseStatusCodePagesWithReExecute("/error/{0}");
[Route("[controller]")]
public class ErrorController : Controller
{
[HttpGet("{statusCode}")]
public IActionResult Error(int statusCode)
{
this.Response.StatusCode = statusCode;
return this.View(statusCode);
}
}
Однако посещение /this-page-does-not-exist
результатов в общей IIS 404 не найден страницу ошибки.
Есть ли способ обрабатывать запросы, не соответствующие маршрутам? Как я могу обрабатывать этот тип запроса до того, как IIS займется? В идеале я бы хотел отправить запрос /error/404
, чтобы мой контроллер ошибок мог его обработать.
В ASP.NET 4.6 MVC 5 нам нужно было использовать раздел httpErrors в файле Web.config для этого.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" />
<error statusCode="404" responseMode="ExecuteURL" path="/error/404/" />
</httpErrors>
</system.webServer>
</configuration>
Вы можете использовать global.asax и 'protected void Application_Error (отправитель объекта, EventArgs e)', чтобы поймать все ошибки, а затем перенаправить оттуда. Вам нужно будет проверить, является ли это IsAjaxRequest, но в противном случае вы можете перенаправить на основе исключения –
Это ASP.NET 5 Beta 7 MVC 6. Существует не Global.asax. –
Действительно? Ты уверен? Это похоже на то, что вы * * использовали * httpErrors, когда у вас не было * есть *? По умолчанию нет global.asax, просто добавьте один - http://stackoverflow.com/questions/24718640/mvc-6-with-vnext-do-still-need-the-global-asax –