2013-05-01 21 views
7

Uruchomiłem skrypty ELMAH sql w testowym DB (utworzyło tabelę ELmah_Error i 3 procedury składowane) i skonfigurowałem ELMAH w aplikacji MVC za pomocą Nuget.ELMAH dla ASP.NET MVC 4 przy użyciu SQL SERVER 2008 R2

I zmodyfikowane web.config określone i jestem w stanie zalogować się wyjątki

http://mysite/elmah.axd 

Ale zamiast tego chcę rejestrować wyjątków w SQL Server.

dodałem poniżej klasy osiągnąć

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 
    } 
} 

Finał krokiem było:

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

Czy to poprawny sposób używać ELMAH rejestrować wszystkie wyjątki albo ja czegoś brakuje?

Odpowiedz

11

Gdy masz konfigurację bazy danych, wszystko co musisz zrobić, to dodać następujące sekcji <elmah> Twój web.config aby skonfigurować ELMAH do logowania do bazy danych SQL:

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

Wymień <DBConnString> i <YourApp> z odpowiednimi wartościami dla twojej konfiguracji.

Po wykonaniu tej czynności nie będzie trzeba używać niestandardowej klasy ElmahHandleErrorAttribute.

Nie jestem pewien, który pakiet NuGet zainstalowałeś, ale polecam używanie pakietu Elmah.MVC, ponieważ integruje on Elmah w MVC wyjątkowo dobrze, ustawiając dla Ciebie wszystkie ErrorHandlers i ErrorFilters.

+1

Co z istniejącą konfiguracją elmah? Czy elmah utworzy niezbędne tabele? – Rahatur

+7

Żaden elamh nie utworzy istniejących tabel automatycznie. Możesz jednak pobrać skrypt do tego typu bazy danych i wersji z https://code.google.com/p/elmah/wiki/Downloads w sekcji bazy danych. –

+0

Wierzę, że jest to nazwa ciągu połączenia (zgodnie z definicją w sekcji web.config ), a nie sam ciąg połączenia, który ma wartość connectionStringName = "". – Bern