【问题标题】:MVC 4 HttpNotFound() and 404 errorMVC 4 HttpNotFound() 和 404 错误
【发布时间】:2014-04-29 02:53:22
【问题描述】:

我有一个控制器,我在其中处理部分 url,如果它符合某些条件,我将返回一个视图,但如果不匹配,我将返回一个 HttpNotFound()

现在我已经设置了一个友好的 404 页面,如果抛出 404,用户将被重定向到,那么为什么 HttpNotFound 不重定向到这个页面呢?

我希望 404 被抛出,然后页面被重定向到 web.config 中设置的错误页面,但它只显示默认的 404 页面。我检查了其他不存在的 url,这些都重定向到正确的错误页面

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 http-status-code-404


    【解决方案1】:

    事实证明你应该抛出异常:

    throw new HttpException(404, "Page Not Found");
    

    这似乎处理了 404,然后将您重定向到正确的页面,而不仅仅是 IIS 404 页面

    【讨论】:

      【解决方案2】:

      只是猜测......

      您没有被重定向到友好的 404 页面的原因是因为 IIS/MVC 能够处理该请求。然后在处理请求时,您确定需要向客户端返回 404 状态码。

      就个人而言,我更喜欢返回 404 状态代码和我的 PageNotFound 视图,类似于 StackOverflow 使用的这种方法:https://stackoverflow.com/a/499907/84395

      【讨论】:

      • 在 HttpNotFound() 函数出现之前我就是这样做的,但我发现在极少数情况下我们更改了 404 页面的 ActionName 然后我们必须通过整个站点并更改所有控制器,就像我现在所做的那样,我们只需要更改 web.config
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-17
      • 2017-04-07
      • 1970-01-01
      • 2013-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多