HttpError不会显示自定义错误页面

时间:2009-12-11 15:19:34

标签: asp.net iis-7

我在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仍显示内置错误页面。

有什么想法吗?

5 个答案:

答案 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服务器本身测试重定向,请确保选中自定义错误页。如果您正在远程测试,则可以选中本地请求的详细错误和远程请求的自定义错误页面。这似乎是我的测试环境中的默认选项。