在web.config配置
1 <customerrors mode="remoteonly" defaultredirect="genericerrorpage.htm"> 2 <error statuscode="403" redirect="noaccess.htm" /> 3 <error statuscode="404" redirect="filenotfound.htm" /> 4 </customerrors>
mode的值可以为on、off、remoteonly
on表示任何时候都执行、off从不执行彻底关闭、remoteonly本地不执行可以看到错误信息,其他用户访问执行跳入错误页面(实现机制,限制ip 只允许127.0.0.1访问)如果项目发布到服务器,指只有登录服务器才能看到错误信息,推荐使用remoteonly本地调试使用on
defaultredirect="genericerrorpage.htm"当页面有错误的跳入指定页面,这里可以是aspx页面制作日志的时候使用defaultredirect="errorpage.aspx"
想看到错误信息必须在<customerrors mode="on" redirectmode="responserewrite" defaultredirect="errorpage.aspx">中添加redirectmode="responserewrite"属性
其中redirectmode属性值有responseredirect和responserewrite
1)redirectmode 属性设置为responseredirect,则将用户重定向到该错误页面,并且原始 url 更改为该错误页面的 url,并附带aspxerrorpath参数,参数值为发生错误的动态页的路径。
2)redirectmode 属性设置为 responserewrite,则将用户定向到错误页面,并且不更改浏览器中的原始 url。
当设置redirectmode为responserewrite时,如果未安装.net framework3.5,会显示asp.net默认的编译错误,并没有执行定义的错误页面。edirectmode指定为responseredirect时会执行指定的错误页面,但是会附带aspxerrorpat参数。
所以要配置web.config的customerrors节点的属性redirectmode为responseredirect并且起作用,需要安装.net framework3.5。
如:sqlconnection sql = new sqlconnection("ip=127.0.0.1&username=qqqq&pwd=qqqqqq");在某一页面制造一个错误这是会跳入errorpage.aspx
在errorpage.aspx中可以通过exception ex = httpcontext.current.server.getlasterror();来获取最近的一个错误信息通过ex.innerexception.message和ex.innerexception.stacktrace来读取错误信息并写入日志以备程序员查看纠错