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=当前页面已过期,请重新登陆!");
     }
    }

  • 相关阅读:
    ConcurrentHashMap的使用和原理
    记录下项目中常用到的JavaScript/JQuery代码一(大量实例)
    layer ui插件显示tips时,修改字体颜色
    flash上传文件,如何解决跨域问题
    ubuntu下的mv命令
    Semantic 3D
    shellnet运行train_val_seg.py
    Tensorflow的不足之处
    用pip命令把python包安装到指定目录
    ubuntu建立文件或者文件夹软链接
  • 原文地址:https://www.cnblogs.com/seabluescn/p/579039.html
Copyright © 2011-2022 走看看