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

前端之家收集整理的这篇文章主要介绍了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代码解决这个问题.

猜你在找的C#相关文章