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