我正在使用下面的中间件为HTTP状态代码400到599设置错误页面.所以访问/error/400
会显示一个400错误请求错误页面.
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.NET4.6MVC5,我们不得不在Web上使用httpErrors部分.配置文件来执行此操作.
<?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>