我在web.config中有这个:
<httpErrors errorMode="Custom">
<remove statusCode="404" subStatusCode="-1" />
<remove statusCode="500" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/Error/NotFound.aspx" responseMode="Redirect" />
<error statusCode="500" prefixLanguageFilePath="" path="/Error/ServerError.aspx" responseMode="Redirect" />
</httpErrors>
但IIS仍显示内置错误页面。
有什么想法吗?
答案 0 :(得分:19)
您可能还需要在httpErrors元素中设置existingReponse属性,如下所示:
<httpErrors errorMode="Custom" existingResponse="Replace">
<clear />
<error statusCode="404" prefixLanguageFilePath="" path="/ErrorHandler.aspx" responseMode="ExecuteURL" />
<error statusCode="500" prefixLanguageFilePath="" path="/ErrorHandler.aspx" responseMode="ExecuteURL" />
</httpErrors>
答案 1 :(得分:6)
这就是我使用它的方式,它对我有用,除了subStatusCode指令和ExecuteURL外,它看起来非常相似。
<httpErrors>
<!--Remove inherited 500 error page setting -->
<remove statusCode='500' subStatusCode='-1'/>
<!--Override the inherited 500 error page setting with the 'My500.html' as its path-->
<error statusCode='500' subStatusCode='-1' prefixLanguageFilePath='' path='/My500.html' responseMode='ExecuteURL'/>
</httpErrors>
答案 2 :(得分:3)
如果您使用的是ExecuteURL,则自定义错误页面路径必须与应用程序本身位于同一应用程序池中。
出于架构原因,IIS 7.0只能在同一应用程序池中执行URL。使用重定向功能在不同的应用程序池中执行自定义错误。
答案 3 :(得分:2)
好像您使用的是服务器相对网址,请尝试从MSDN设置responseMode="ExecuteURL"
。
<强> ExecuteURL 强>
提供动态内容(例如, 路径中指定的.asp文件) 自定义错误的属性。如果 responseMode设置为ExecuteURL ,. path值必须是服务器相对的 URL。数值为1.
<强>重定向强>
将客户端浏览器重定向到URL 在path属性中指定的 包含自定义错误文件。如果 responseMode设置为Redirect,即 路径值必须是绝对URL。 数值为2。
答案 4 :(得分:0)
确保您具有IIS中错误页面重定向的正确功能设置。要检查此项,请在IIS管理器的“错误页面”页面中单击“编辑功能设置”,如果要从Web服务器本身测试重定向,请确保选中自定义错误页。如果您正在远程测试,则可以选中本地请求的详细错误和远程请求的自定义错误页面。这似乎是我的测试环境中的默认选项。