参考地址1:http://benfoster.io/blog/aspnet-mvc-custom-error-pages
参考地址2:https://msdn.microsoft.com/en-us/library/ms690497(v=vs.90).aspx
注意:404页面等的配置,在web.config里面配置时:IIS版本不同,配置的方法是不同的,IIS7之前是在system.web里面配置,IIS7之后是在system.webserver节点配置。这点切记,不然不会转到错误页。
1、IIS7之前版本配置方法
在system.web节点,添加以下代码。mode还可以为RemoteOnly,这是官方推荐的,意思是在服务器端访问会列出错误信息,远程访问才会转到404页面等,本地调试使用On。statusCode填写相应的出错代码500等。
Asp.Net级别的错误处理程序,只处理Asp.Net应用抛出的异常,静态文件(如.jpg,.htm,.js等)不会被处理
<customErrors mode="On"> <error statusCode="404" redirect="~/404.html"/> </customErrors>
2、IIS7+版本配置方法
在system.webServer节点添加以下代码。Custom对应上面的On,还可以为DetailedLocalOnly,默认值,对应上面的RemoteOnly。
remove节点表示从http错误集合中,清除掉对应错误码的http错误引用。
error节点responseMode=“ExecuteURL”,表示path只能是当前服务器的一个相对路径的地址页面,不能为绝对地址。当值为Redirect时,表示path必须是一个绝对路径的地址,比如“http://www.baidu.com”。
所有的文件和URL都处理。
existingResponse的意思是:
默认是Auto,这时对于.net异常,会列出.net自带的异常页面,而静态文件会使用我们自定义的。如果是Replace,所有的异常处理都会使用我们自定义的。
https://docs.microsoft.com/en-us/iis/configuration/system.webServer/httpErrors/
<httpErrors errorMode="Custom" existingResponse="Replace"
> <remove statusCode="404" /> <error statusCode="404" responseMode="ExecuteURL" path="/404.html" /> </httpErrors>