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"以进行调试时,它可能更方便.
| 归档时间: |
|
| 查看次数: |
12821 次 |
| 最近记录: |