實現的功能很簡單,就是用企業庫的異常處理模塊和日志模塊,利用windows的系統日志,記錄web應 用的異常。
我的企業庫是4.1版
1.添加對Microsoft.Practices.EnterpriseLibrary.ExceptionHandling和 Microsoft.Practices.EnterpriseLibrary.Logging的引用
2.重寫Application_Error
protected void Application_Error(Object sender, EventArgs e)
{
try {
Exception objErr = Server.GetLastError ().GetBaseException();
Application["errorPage"] = Request.Url.ToString();
Application["errorMsg"] = objErr.Message;
Server.ClearError();
ExceptionPolicy.HandleException(objErr, "global expcetion"); //第一個參數是異常,第二個可以理解為異常名或者異常類型
}
catch
{ }
}
3.在配置文件中加入
<exceptionHandling>
<exceptionPolicies>
<add name="global expcetion"> //這就是你定義的異常名或者異常類型
<exceptionTypes>
<add type="System.Exception, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
postHandlingAction="NotifyRethrow" name="Exception">
<exceptionHandlers>
<add logCategory="General" eventId="100" severity="Error" title="Enterprise Library Exception Handling"
formatterType="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.TextExceptionFormatte r, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
priority="0" useDefaultLogger="false" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.LoggingExceptionHandle r, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
name="Logging Handler" />
</exceptionHandlers>
</add>
</exceptionTypes>
</add>
</exceptionPolicies>
</exceptionHandling>
4.在程序中加入下列代碼測試異常
throw new Exception("Test");
5.注意:
需要將異常拋至全局處理的action,不要加異常過濾器IExceptionFilter,否則的話,異常無法傳遞 到Application_Error。
如果一定要使用IExceptionFilter,則將ExceptionPolicy.HandleException(objErr, "global expcetion"); 加入至過濾器中即可.