fer e.g // in global.asax protected void Application_Error(Object sender, EventArgs e) { if (Server.GetLastError() is HttpUnhandledException) Server.Transfer("MyErrorPage.aspx"); //其余的非 HttpUnhandledException 异常交给 ASP.
NET 自己处理就 okay 了 :) } Redirect 会导致 post-back 的产生从而丢失了错误信息,所以页面导向应该直接在服务 器端执行,这样就可以在错误处理页面得到出错信息并进行相应的处理 10.清空 Cookie Cookie.Expires=[DateTime]; Response.Cookies("UserName").Expires = 0 11.自定义异常处理 //自定义异常处理类
using System; using System.Diagnostics; namespace MyAppException { /// <summary> /// 从
系统异常类 ApplicationException 继承的应用程序异常处理类。 /// 自动将异常内容记录到 Windows NT/2000 的应用
程序日志 /// </summary> public class AppException:System.ApplicationException { public AppException() { if (ApplicationConfiguration.EventLogEnabled)LogEvent("出现一个未知错误。"); } public AppException(string message) { LogEvent(message); } public AppException(string message,Exception innerException) { LogEvent(message); if (innerException != null) { LogEvent(innerException.Message); } } //日志记录类 using System; using System.Configuration; using System.Diagnostics; using System.IO; using System.Text; using System.Threading; namespace MyEventLog { /// <summary> /// 事件日志记录类,提供事件日志记录支持 /// <remarks> /// 定义了 4 个日志记录方法 (error, warning, info, trace)
/// </remarks> /// </summary> public class ApplicationLog { /// <summary> /// 将错误信息记录到 Win2000/NT 事件日志中 /// <param name="message">需要记录的文本信息</param> /// </summary> public static void WriteError(String message) { WriteLog(TraceLevel.Error, message); } /// <summary> /// 将警告信息记录到 Win2000/NT 事件日志中 /// <param name="message">需要记录的文本信息</param> /// </summary> public static void WriteWarning(String message) { WriteLog(TraceLevel.Warning, message); } /// <summary> /// 将提示信息记录到 Win2000/NT 事件日志中 /// <param name="message">需要记录的文本信息</param> /// </summary> public static void WriteInfo(String message) { WriteLog(TraceLevel.Info, message); } /// <summary> /// 将跟踪信息记录到 Win2000/NT 事件日志中 /// <param name="message">需要记录的文本信息</param> /// </summary> public static void WriteTrace(String message) { WriteLog(TraceLevel.Verbose, message); } /// /// /// ///
///
<summary> 格式化记录到事件日志的文本信息格式 <param name="ex">需要格式化的异常对象</param> <param name="catchInfo">异常信息标题字符串.</param> <retvalue>
/// <para>格式后的异常信息字符串,包括异常内容和跟踪堆栈.</para> /// </retvalue> /// </summary> public static String FormatException(Exception ex, String catchInfo) { StringBuilder strBuilder = new StringBuilder(); if (catchInfo != String.Empty) { strBuilder.Append(catchInfo).Append("\r\n"); } strBuilder.Append(ex.Message).Append("\r\n").Append(ex.StackTrace); return strBuilder.ToString(); } /// <summary> /// 实际事件日志写入方法 /// <param name="level">要记录信息的级别(error,warning,info,trace).</param> /// <param name="messageText">要记录的文本.</param> /// </summary> private static