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

Aes*_*sir 8 c# webforms web-applications iis-7.5

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

<customErrors mode="On" >
    <error statusCode="404" redirect="~/404.aspx"/>
    <error statusCode="500" redirect="~/500.aspx"/>
</customErrors>
Run Code Online (Sandbox Code Playgroud)

这适用于.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>
Run Code Online (Sandbox Code Playgroud)

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

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

我曾尝试加入到这个在Page_Load事件我的自定义错误页的建议在这里:

            Response.TrySkipIisCustomErrors = true;
Run Code Online (Sandbox Code Playgroud)

但是它并没有阻止默认的IIS页面显示代替我的自定义错误页面.我也试过这里建议的:

<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>
Run Code Online (Sandbox Code Playgroud)

但这也没有奏效.

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

Aes*_*sir 15

我遇到的问题是默认情况下有一个属性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>
Run Code Online (Sandbox Code Playgroud)

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