2

我正在尝试在我的 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。

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

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

“该页面无法显示,因为发生了内部服务器错误。”

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

以下是我选择的属性列表以及原因:

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

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

defaultPath="/Error/404":如果我没有指定,我想要请求的相对 url。

编辑:

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

4

2 回答 2

0

尝试改用 web.config(system.web 内部)中的 customErrors 部分。

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

例如

<customErrors mode="On">
        <error statusCode="404" redirect="Error/404" />
        <error statusCode="500" redirect="Error/500" />
    </customErrors>
于 2012-04-24T11:29:47.820 回答
0

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

<system.web>
    <customErrors mode="On" defaultRedirect="/Error/Index/" >
      <error statusCode="401" redirect="/Error/NoAccess/" />
      <error statusCode="404" redirect="/Error/NotFound/" />
    </customErrors>
    ....
</system.web>
于 2012-04-24T11:32:44.170 回答