2013-05-01 73 views
7

我在測試數據庫中運行ELMAH sql腳本(它創建了ELmah_Error表和3個存儲過程)並使用Nuget在MVC應用程序中配置了ELMAH。ELMAH for ASP.NET MVC 4使用SQL SERVER 2008 R2

我修改的web.config按規定,我能例外登錄到

http://mysite/elmah.axd 

但是,相反,我想記錄異常到SQL Server。

我添加下面的類實現這一

public class ElmahHandleErrorAttribute : System.Web.Mvc.HandleErrorAttribute 
{ 
    public override void OnException(System.Web.Mvc.ExceptionContext context) 
    { 
     LogException(e); 
    } 
    private static void LogException(Exception e) 
    { 
     // Call to Database and insert the exception info 
    } 
} 

最後一步是:

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
{ 
    filters.Add(new ElmahHandleErrorAttribute()); 
} 

是否使用ELMAH來記錄所有的異常還是我失去了一些正確的方法是什麼?

回答

11

一旦你的數據庫設置,所有你需要做的就是添加以下到<elmah>節你的web.config來設置ELMAH來登錄到SQL數據庫:

<elmah> 
     <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="<DBConnString>" 
      applicationName="<YourApp>" 
    </elmah> 

更換<DBConnString><YourApp>爲您的配置提供適當的值。

完成此操作後,您將不需要使用自定義的ElmahHandleErrorAttribute類。

我不確定你安裝了哪個NuGet軟件包,但是我會推薦使用Elmah.MVC軟件包,因爲它通過爲您設置所有ErrorHandler和ErrorFilter,將Elmah集成到MVC中非常好。

+1

現有的elmah配置怎麼樣? elmah會創建必要的表格嗎? – Rahatur 2014-01-15 12:13:56

+7

沒有elamh不會自動創建現有的表格。但是,您可以從數據庫部分的https://code.google.com/p/elmah/wiki/Downloads下載腳本,以便爲您的數據庫類型和版本執行此操作。 – 2014-01-15 13:19:15

+0

我相信它是連接字符串名稱(在web.config 部分中定義),而不是連接字符串本身,它出現在connectionStringName =「」值中。 – Bern 2015-02-11 14:10:47