gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 17:19:00 26 4
gpt4 key购买 nike

我花了一天时间浏览了十几个或更多的网站、博客和 SO 答案,所有这些都声称提供了在 ASP.NET MVC 中实现自定义错误处理的“正确”方法。

他们彼此都不同意,而且他们中的大多数似乎都不起作用。

我想要的是:

  • 标准 HTTP 错误的自定义页面
  • 与我网站的标准页面具有相同的外观
  • 无需完全重做我在 Shared/_Layout.cspx 中的所有内容
  • 无论用户是否通过身份验证都可以工作
  • 但这并不能访问任何用户需要通过身份验证才能访问的内容
  • 这应该正确返回带有适当 HTTP 错误代码的请求的 URL,而不是重定向到返回 HTTP 200
  • 的不同页面。
  • 这会将任何不是有效路由的内容重定向到 404 页面,无论是缺少操作、缺少 Controller 还是缺少路由
  • 这允许处理我们需要单独处理的任何子代码,例如 404.3
  • 这在 IIS7、IIS Express 和 Casini 中的工作原理相同
  • 这适用于 MVC5,但将继续适用于 MVC6、MVC7 等。
  • 这不涉及将单独的代码添加到每个页面

  • 而且,我希望这是规范的答案。不仅仅是“这就是我所做的”,而是“这是微软开发人员打算和期望完成的”。

    有任何想法吗?

    最佳答案

    我不确定这是否是最好的方法,但它对我和它的 seo 友好:
    网页配置

     <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" />

    这就是我的错误 Controller 的样子:
    public class ErrorController : Controller
    {
    //
    // GET: /Error/

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

    return View();
    }
    }

    关于asp.net-mvc - 正确处理 ASP.NET MVC 中的自定义错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25516172/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com