使用web.config阻止IIS 7.5显示默认错误页面

时间:2011-07-13 10:39:37

标签: c# web-applications webforms iis-7.5

我正在尝试将自定义错误页面添加到我的Web应用程序中。到目前为止,我已将其添加到元素下的web.config文件中:

<customErrors mode="On" >
    <error statusCode="404" redirect="~/404.aspx"/>
    <error statusCode="500" redirect="~/500.aspx"/>
</customErrors>

这适用于.NET触及的错误,例如包含.aspx扩展名的url。但是,我还希望为网址显示自定义错误,例如www.example.com/dasda

目前,当我请求上述IIS 7.5等页面时,会显示自己的错误消息。我在元素下添加了这个:

<httpErrors >
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" path="~/404.aspx" responseMode="ExecuteURL"  />
    <remove statusCode="500" subStatusCode="-1" />
    <error statusCode="500" path="~/500.aspx" responseMode="ExecuteURL" />
</httpErrors>

我认为这会使IIS显示自定义错误页面而不是默认页面,但似乎并非如此。

我知道我可以在IIS中设置自定义错误页面,但对于我的情况来说,理想的解决方案是在web.config中配置它。

我已尝试将此添加到Page_Load事件的自定义错误页面中,如建议的here

            Response.TrySkipIisCustomErrors = true;

然而,它并未阻止默认IIS页面显示以代替我的自定义错误页面。我也尝试过建议here

<httpErrors >
    <remove statusCode="404" subStatusCode='-1' />
    <error statusCode="404" path="~/404.aspx" prefixLanguageFilePath='' responseMode="Redirect"  />
    <remove statusCode="500" subStatusCode='-1' />
    <error statusCode="500" path="~/500.aspx" prefixLanguageFilePath='' responseMode="Redirect" />
  </httpErrors>

但这也行不通。

那么有没有办法通过配置web.config文件中的设置来阻止IIS显示默认错误页面?

2 个答案:

答案 0 :(得分:14)

我遇到的问题是默认情况下有一个属性errorMode,其中包含以下选项:DetailedLocalOnly,Custom或Detailed。

如果errorMode属性未按照我的方式进行指定,则默认为DetailedLocalOnly(ref)。这意味着我不会看到显示的自定义错误。

有效的配置设置是:

<httpErrors errorMode="Custom">
    <remove statusCode="404" subStatusCode='-1' />
    <remove statusCode="500" subStatusCode='-1' />
    <error statusCode="404" path="/404.aspx" prefixLanguageFilePath="" responseMode="ExecuteURL"  />
    <error statusCode="500" path="/500.aspx" prefixLanguageFilePath="" responseMode="ExecuteURL" />
  </httpErrors>

errorMode =“Custom”可以方便地测试自定义页面是否正常工作,但是当省略或显式设置为errorMode =“DetailedLocalOnly”以进行调试时,它可能更方便。

答案 1 :(得分:0)

我认为您需要强制IIS将CustomErrorModule用于用户请求的任何资源。 尝试将以下内容添加到您的网络配置

 <modules>
      <add name="CustomErrorModule" type="customErrorModule" preCondition="" />
 </modules>

还可以查看以下链接

https://serverfault.com/questions/53712/in-iis-7-how-do-i-set-up-a-default-error-document-for-any-error

相关问题