【问题标题】:MVC 5 HttpErrors + Controller/ActionMVC 5 HttpErrors + 控制器/动作
【发布时间】:2013-12-05 22:26:45
【问题描述】:

如何使用 httpErrors 更改控制器/操作的错误路径?

我有这个代码:

<httpErrors errorMode="Custom">
  <remove statusCode="404"/>
  <error responseMode="ExecuteURL" statusCode="404" path="Error/HttpRequestError"/>
</httpErrors>

但它不起作用。显示空白页面且未输入操作。

我做错了什么?

附:我知道另一种解决自定义页面错误的方法。但我想尝试使用它。

谢谢!

【问题讨论】:

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


    【解决方案1】:

    我解决了一个问题。此 web.config 代码有效:

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

    现在进入 ErrorsController/NotFound 动作(标有路由属性ActionName 到 404)。

    【讨论】:

    • 请注意,“ExecuteURL”区分大小写!
    • 这种方法对我不起作用。我得到 ASP.net “找不到资源”。错误页面。我可以直接访问 /Error/404 页面。我在 IIS Express 和 IIS 中尝试过。有什么建议吗?
    • @Sean 这个是正确的,但重要的一点是,如果你有一个虚拟目录路径,或者你也必须填写它,它就不起作用。我不知道,所以花了好几个小时才找到为什么我不能让它工作。
    • 不适用于 MVC5。返回一个空白页面并且从不点击控制器操作。
    • 对不起,我对 MVC 很陌生,能否请您也显示您的 ErrorController 的代码。这对避免混淆有很大帮助。谢谢
    【解决方案2】:

    你为什么不简单地重定向 404 的 url

    <customErrors mode="RemoteOnly"  defaultRedirect="~/error">
        <error statusCode="404" redirect="~/Error/HttpRequestError" />    
    </customErrors
    

    【讨论】:

    • 额外的重定向对 CEO 不利。
    • @SergeyShoshin 什么是 CEO?你指的是 SEO 吗?
    • 哦,对不起。完全是 SEO。
    • @SergeyShoshin CEO 也不喜欢不必要的重定向。
    • 虽然我自己遇到了错误页面问题,但这些 cmets 确实让我笑了 :D
    【解决方案3】:

    如果 Sergey Shoshin 的回答不起作用。

    <httpErrors errorMode="Custom" existingResponse="Replace">
          <remove statusCode="404"/>
          <error statusCode="404" responseMode="ExecuteURL" path="[optional virtual directories...]/Error/404"/>
    </httpErrors>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-25
      • 2016-08-20
      • 1970-01-01
      • 1970-01-01
      • 2017-09-18
      • 2015-12-04
      • 1970-01-01
      相关资源
      最近更新 更多