一、对比
customErrors 用于捕捉ASP.NET触发的错误,静态html页面或目录不存在等错误,不会被捕捉到。
httpErrors 用于捕捉IIS触发的错误,IIS7+版本才支持。
二、配置文件
1.IIS7+:
<system.web>
<customErrors mode="On" defaultRedirect="Error.html">
<error statusCode="403" redirect="/Error403" />
<error statusCode="404" redirect="/Error404" />
<error statusCode="500" redirect="/Error500" />
</customErrors>
</system.web>
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Auto" defaultResponseMode="ExecuteURL" >
<remove statusCode="403"/>
<remove statusCode="404"/>
<remove statusCode="500"/>
<!--path不能使用~/开头,直接/-->
<error statusCode="403" responseMode="ExecuteURL" path="/Error403" />
<error statusCode="404" responseMode="ExecuteURL" path="/Error404" />
<error statusCode="500" responseMode="ExecuteURL" path="/Error500" />
</httpErrors>
</system.webServer>
静态页
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Auto" defaultResponseMode="File" >
<remove statusCode="404"/>
<error statusCode="404" path="404.html" />
</httpErrors>
</system.webServer>
2.IIS6.0
配置customErrors
配置httpErrors
参考:
1.http://stackoverflow.com/questions/2480006/what-is-the-difference-between-customerrors-and-httperrors
2.https://tedgustaf.com/blog/2011/custom-404-and-error-pages-for-asp-net-and-static-files/