c# – ASP.NET MVC 6基于HTTP状态代码处理错误

我想为每个状态代码显示不同的错误消息,例如:

> 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代码解决这个问题.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...