httpErrors没有重定向到MVC 3的正确页面

时间:2012-04-24 11:19:49

标签: asp.net-mvc-3 custom-error-pages http-error custom-errors

我正在尝试在我的MVC 3 Web应用程序中设置http自定义错误页面。我在web.config中添加了以下内容:

<httpErrors errorMode="Custom" defaultResponseMode="ExecuteUrl" defaultPath="/Error/404">
  <clear />
  <error statusCode="500" path="/Error/404"
</httpErrors>

如果请求发生500错误,我希望这会将用户重定向到my.domainname.com/Error/404。

我有一个错误控制器,其中包含一个名为error的操作,我已将404的请求映射到此操作。

当我在网站上强制出现500错误(由Chrome开发人员工具网络标签验证)时,我会收到一个空白页面,其中包含以下消息:

“由于发生内部服务器错误,无法显示页面。”

如果我从web.config中删除了httpErrors部分,那么我会收到实际的异常消息。因此,我在web.config中的httpErrors部分必须正常工作,我只是不明白如何正确设置它。

以下列出了我选择的属性以及原因:

errorMode =“Custom”:这样我就可以看到自定义错误页面,并在将其更改为仅本地之前验证它是否正常工作。

defaultResponseMode =“ExecuteUrl”:这应该允许我指定一个服务器相对URL作为路径,这听起来像我想要的控制器动作。

defaultPath =“/ Error / 404”:如果我没有指定,我想要的相对网址。

编辑:

我应该补充一点,该网站正在IIS 7.5上运行。我也不希望使用该标记,因为它旨在与IIS 6一起使用,应该用于IIS 7+。

2 个答案:

答案 0 :(得分:0)

尝试使用web.config中的customErrors部分(在system.web中)。

http://msdn.microsoft.com/en-us/library/h0hfz6fc.aspx

e.g。

<customErrors mode="On">
        <error statusCode="404" redirect="Error/404" />
        <error statusCode="500" redirect="Error/500" />
    </customErrors>

答案 1 :(得分:0)

应该像Controller/Action/Id。在您的情况下,行动缺失。检查以下示例并根据您的操作方法进行更改...

<system.web>
    <customErrors mode="On" defaultRedirect="/Error/Index/" >
      <error statusCode="401" redirect="/Error/NoAccess/" />
      <error statusCode="404" redirect="/Error/NotFound/" />
    </customErrors>
    ....
</system.web>