我想在我的MVC 3 Web应用程序中设置http自定义错误页面。我已经添加了以下到我的web.config:httpErrors不重定向到正确的页面与MVC 3
<httpErrors errorMode="Custom" defaultResponseMode="ExecuteUrl" defaultPath="/Error/404">
<clear />
<error statusCode="500" path="/Error/404"
</httpErrors>
当一个请求我预计这将用户重定向my.domainname.com/Error/404出现500错误。
我有一个错误控制器,其中包含一个称为错误的操作,我已将404的请求映射到此操作。
当我强迫网站上的500错误(通过Chrome开发者工具的网络选项卡验证)我收到一个空白页以下消息:
“该页面无法显示,因为发生了内部服务器错误。 “
如果我从我的web.config中删除httpErrors部分,那么我会得到实际的异常消息。因此,我在web.config中的httpErrors部分必须工作,我只是不明白如何正确设置它。
这是我选择的属性,为什么清单:
errorMode =“自定义”:那么,我可以看到自定义错误页,并验证它正在将其更改为仅本地之前。
defaultResponseMode =“ExecuteUrl”:这应该允许我指定一个服务器相对url作为路径,这听起来像我想要的,因为我想要控制器操作。
defaultPath =“/ Error/404”:如果我没有指定一个,我想要求的相对url。
编辑:
我应该补充说,该网站在IIS 7.5上运行。我也不希望使用这个标签,因为它被设计为与IIS 6一起使用,并且应该用于IIS 7+。
对不起,我会更新我的问题。它确实与customErrors部分一起工作,但这不是一个理想的解决方案,因为它们现在是一个遗留选项,并且设计用于IIS 6. – Aesir 2012-04-24 11:34:36
设置defaultResponseMode =“重定向”并将路径设置为绝对URL是否工作?我知道这不完全是你想要的,因为使用相对路径更好,但可能有助于调试问题。 – 2012-04-24 11:51:12
在这种情况下,我无法设置绝对路径,因为子域可能会有所不同,并可供用户更改。所以my.domainname.com可以是test.domainname.com等。所以我需要的路径是相对的。 – Aesir 2012-04-24 13:31:45