zoukankan      html  css  js  c++  java
  • ASP.NET未处理异常的处理

    ASP.NET页面出现未处理异常时,其页面信息用户很难理解,我们的要求是:
    (1)记录错误信息;
    (2)对用户隐藏错误,只告知用户出错了。

    1.在页面上处理(推荐)
    创建一个类,其它页面从该类继承
    public class WebPage :  System.Web.UI.Page
    {
    //添加事件处理方法
    private void MyPage_Error(object sender, EventArgs e)
    {
     //DoSomething();
    }
    //登记Error事件
    private void InitializeComponent()
    {    
     this.Error += new EventHandler(MyPage_Error);
    }
    }

    2.在应用程序级处理(Global.sxsx.cs)
    protected void Application_Error(Object sender, EventArgs e)
    {
     //DoSomething(); 
    }

    3.修改Web.Config文件
    <customErrors 
    mode="RemoteOnly"
    defaultRedirect="myerror.aspx"
    >

    4.调用顺序
    调用顺序依次为:页面级->应用程序级->配置文件
    如果在上一级代码中有页面重定向,则后面级别的程序就不会执行。

    5.DoSomething();
    主要做两件事:(1)记录出错信息。(2)重定向页面。
    private void DoSomething()
    {
     string ErrorID = DateTime.Now.ToString();
     string ErrStr = "ErrorID:" + ErrorID;
     ErrStr += "\r\n";
     ErrStr += Server.GetLastError().ToString();
     ErrStr += "\r\n";
     WriteLog(ErrStr);   
     Server.ClearError();
     string url = "/MyProject/FrmError.aspx?Message=发生未处理异常,请与系统管理员联系。";
     Response.Redirect(url);
    }

    6.WriteLog();
    private void WriteLog(string info)
    {
     string FileName = Server.MapPath("/MyProject/LogFiles/Error.LOG");
     using (StreamWriter sw = new StreamWriter(FileName,true))
     {  
      sw.WriteLine(info);
     }
    }

    7.Response.Redirect 还是 Server.Transfer
    (1)Server.Transfer:在服务器端把处理的控制权从一个页面转移到另一个页面,在转移的过程中,不会丢失用户提交信息,而且浏览器的 URL 不变。
    (2)Response.Redirect: 发送一个 HTTP 响应到客户端,告诉客户端跳转到一个新的页面,客户端再发送跳转请求到服务器。
    (3)Server.Transfer只能够转跳到本地虚拟目录指定的页面,而Response.Redirect则十分灵活;

    8.Session失效的问题
    Session失效的异常用户可以自己恢复,所以应单独处理。
    protected void CheckUserInfo()
    {
     if (Session["UserInfo"] != null)
     {
      m_cUser = (CAppUser)Session["UserInfo"];
     }
     else
     {   
      Response.Redirect("/MyProject/frmError.aspx?Message=当前页面已过期,请重新登陆!");
     }
    }

  • 相关阅读:
    简单使用GDB
    【老人孟岩经验谈】如何学习一本新的编程语言
    【做存档】如何争取到真正有用的人脉?
    回头来看C语言里的static
    Spring MVC 教程,快速入门,深入分析[1220]
    eclipse ibabis代码生成插件abator功能扩展
    在MyEclipse中配置Tomcat服务器
    将远程调试的控制台信息输出至Eclipse
    LOG4J.PROPERTIES配置详解
    java Map 怎么遍历
  • 原文地址:https://www.cnblogs.com/seabluescn/p/579039.html
Copyright © 2011-2022 走看看