我想为每个状态代码显示不同的错误消息,例如:
> 400错误请求
> 403禁止
> 500内部服务器错误
> 404未找到
> 401未经授权
如何在新的ASP.NET MVC 6应用程序中实现这一点?我可以使用内置的UseErrorHandler方法吗?
application.UseErrorHandler("/error");
此外,我注意到,即使使用上述处理程序,输入不存在的URL,例如/ this-page – 不存在,会导致IIS中发现难看的404 Not Found错误页面.这怎么也可以处理?
在MVC 5中,我们不得不在web.config文件中使用ASP.NET的system.web customerrors部分和web.config文件中的system.webServer httpErrors部分,但是很难处理笨重的事情,有很多非常奇怪的行为. MVC 6是否使此更简单?
解决方法
您可以使用StatusCodePagesMiddleware进行此操作.以下是一个例子:
public void Configure(IApplicationBuilder app,ILoggerFactory loggerFactory) { app.UseStatusCodePagesWithReExecute("/StatusCodes/StatusCode{0}"); app.UseMvcWithDefaultRoute();
处理状态代码请求的控制器:
public class StatusCodesController : Controller { public IActionResult StatusCode404() { return View(viewName: "NotFound"); // you have a view called NotFound.cshtml } ... more actions here to handle other status codes }
一些注释:
>检查其他扩展方法,如UseStatusCodePagesWithRedirects
和UseStatusCodePages用于其他功能.
>我在我的例子中尝试使用StatusCode作为查询字符串,但是看起来像这样
中间件不处理查询字符串,但可以看一下
this代码并解决这个问题.