ASP.NET页面错误处理

来源:互联网 发布:网络安全之社交软件 编辑:程序博客网 时间:2024/05/18 09:05

页面级错误

protected override void OnError(EventArgs e){    Exception ex = Server.GetLastError();    if(ex is NotImplementedException)        Server.Transfer("errorpages/notImplemented.aspx");    else        Server.Transfer("errorpages/apperror.aspx");    Server.ClearError();}


通过Server对象的GetLastError方法,我们获得被引发的异常。然后传到特定的页面,展示给用户。最后一旦异常处理完成,应用调用ClearError清楚错误。


全局错误处理

页面的Error事件处理能够捕获特定页面的错误,如果要使组合应用程序的所有页面共享一套错误处理代码,我们可以在应用程序级创建一段全局错误处理程序,便可捕获所有未处理异常。实现几乎和页面级的错误处理程序一样,只不过处理的是代表整个应用程序的HttpApplication对象中的Error事件,为此,我们需要将global.asax文件添加到程序中,并定义Application_Error方法:


protected override void OnError(EventArgs e){    Exception ex = Server.GetLastError();    if(ex is NotImplementedException)        Server.Transfer("errorpages/notImplemented.aspx");    else        Server.Transfer("errorpages/apperror.aspx");    Server.ClearError();}



错误的页面映射


当未处理异常抵达调用栈末端时,ASP.NET会报黄页,但是我们还可以通过使用应用程序Web.Config文件中的<customErrors>区段,可以对这个功能进行充分的控制。


<configuration>    <system.web>        <customErrors mode="Off">        </customErrors>    </system.web></configuration>



mode属性用于决定错误消息是启动、关闭还是只显示给远程客户端。
当mode设为RemoteOnly时,远程用户会收到一般性的错误提示页面,而本地可以得到详细的错误信息。
当mode设为off时,本地和远程用户都会显示包含详细错误的页面。
可以自定义错误页面


<configuration>    <system.web>        <customErrors mode="Off" defaultRedirect="GenericErrorPage.htm">        </customErrors>    </system.web></configuration>



如果mode为on时,本地和远程都将会把defaultRedirect="GenericErrorPage.htm"页面来代替原来的错误报黄页面,为用户展示友好的错误提示,大多数自定义的错误页面时纯HTML编写的。


常见的HTTP错误处理


ASP.NET还使我们能够针对发生的不同HTTP错误显示相应的自定义页面。错误页面和特定HTTP状态之间的映射,可以定义在<customErrors>区段,设置<error>标签,将HTTP状态码

和自定义错误页面关联起来:


<configuration>    <system.web>        <customErrors mode="Off" defaultRedirect="GenericErrorPage.htm">            <error statusCode="403" redirect="NoAccess.htm"/>            <error statusCode="404" redirect="FileNotFound.htm"/>        </customErrors>    </system.web></configuration>


0 0
原创粉丝点击