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

asp.net-mvc – 正确处理ASP.NET MVC中的自定义错误?

发布时间:2020-12-16 03:35:12 所属栏目:asp.Net 来源:网络整理
导读:我花了一天时间浏览了十几个或更多网站,博客和SO答案,他们都声称在ASP.NET MVC中提供了“正确”的方式来实现自定义错误处理. 他们中没有一个人互相认同,而且他们中的大多数似乎都不起作用. 我想要的是: 标准HTTP错误的自定义页面 与我网站的标准页面具有相
我花了一天时间浏览了十几个或更多网站,博客和SO答案,他们都声称在ASP.NET MVC中提供了“正确”的方式来实现自定义错误处理.

他们中没有一个人互相认同,而且他们中的大多数似乎都不起作用.

我想要的是:

>标准HTTP错误的自定义页面
>与我网站的标准页面具有相同的外观
>无需完全重做我在Shared / _Layout.cspx中的所有内容
>无论用户是否经过身份验证,都可以正常工作
>但是,这不能提供对用户应该被要求进行身份验证以访问的任何内容的访问权限
>这应该正确地返回使用适当的HTTP错误代码请求的URL,而不是重定向到返回HTTP 200的其他页面
>将任何不是有效路线的内容重定向到404页面,无论是缺少操作,缺少控制器还是缺少路径
>这允许处理我们需要单独处理的任何子代码,如404.3
>在IIS7,IIS Express和Casini中也是如此
>这适用于MVC5,但将继续在MVC6,MVC7等工作.
>这不涉及将单独的代码添加到每个页面

并且,我希望这是规范的答案.不只是“这就是我的工作”,而是“这是微软开发人员打算并期望完成的工作”.

有任何想法吗?

解决方法

我不确定这是否是最好的方式,但它适用于我和它的SEO友好:
web.config中

<system.webServer>
   <httpErrors errorMode="Custom" existingResponse="Replace">
      <remove statusCode="404" />
      <error statusCode="404" responseMode="ExecuteURL" path="/Error/NotFound" />
    </httpErrors>
  </system.webServer>

您也可以定义子状态代码:

<error statusCode="404" subStatusCode="2" responseMode="ExecuteURL" path="/Error/NotFound" />

这就是我的错误控制器的样子:

public class ErrorController : Controller
{
    //
    // GET: /Error/      

    public ActionResult NotFound()
    {
        // you have to set your error codes manually
        Response.StatusCode = (int)HttpStatusCode.NotFound;

        return View();
    }
}

(编辑:李大同)

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

    推荐文章
      热点阅读