加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 17:40:58 所属栏目:百科 来源:网络整理
导读:我想为每个状态代码显示不同的错误消息,例如: 400错误请求 403禁止 500内部服务器错误 404未找到 401未经授权 如何在新的ASP.NET MVC 6应用程序中实现这一点?我可以使用内置的UseErrorHandler方法吗? application.UseErrorHandler("/error"); 此外,我注意
我想为每个状态代码显示不同的错误消息,例如:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读