[ASP.NET MVC 3] elmah Integration

Abend liebe Leute 😉

Seit einiger Zeit entwickle ich nun schon verschiedene Intranetapplikationen unter Einsatz des ASP.NET MVC 3 Frameworks. Und da wir alle nur Menschen sind, machen wir bekanntlich auch Fehler…

Am Schlimmsten ist es dann, vom Kunden zu hören „Geht nicht!“. Als Entwickler ist man dann immer froh ĂŒber Mitarbeit. Als zusĂ€tzliche Hilfe möchte ich euch heute zeigen, wie man elmah (Error Logging Modules and Handlers) in seine MVC-Applikation einbindet und konfiguriert.

Als erstes ladet ihr euch die Binaries unter dem oben angegebenen Link herunter (aktuell zum Zeitpunkt des Blogposts: v1.2 SP1). Entpackt diese in euer Libs-Verzeichnis eurer Solution (oder wo auch immer ihr die hinpackt 😉 ).

FĂŒgt nun in eurem MVC-Projekt einen Verweis auf die Elmah.dll hinzu.

Folgendes in die web.config hinzufĂŒgen:


<configuration>

    <configSections>

        ...

        <sectionGroup name="elmah">

            <section name="errorLog" type="Elmah.ErrorLogSectionHandler, Elmah" requirePermission="false" />

            <section name="errorFilter" type="Elmah.ErrorFilterSectionHandler, Elmah" requirePermission="false" />

            <section name="security" type="Elmah.SecuritySectionHandler, Elmah" requirePermission="false" />

        </sectionGroup>

    </configSections>

    <elmah>

        <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/Logs/Elmah" />

        <!-- Achtung! Erlauben des Remotezugriffs erfolgt auf eigene Gefahr! -->

        <!-- Infos: http://www.troyhunt.com/2012/01/aspnet-session-hijacking-with-google.html -->

        <!--<security allowRemoteAccess="1" />-->

    </elmah>

    ...

    <!-- fĂŒr IIS < 7 -->

    <system.web>

        ...

        <httpHandlers>

            ...

            <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />

        </httpHandlers>

        <httpModules>

            ...

            <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />

        </httpModules>

    </system.web>

    <!-- fĂŒr IIS >= 7 -->

    <system.webServer>

        ...

        <handlers>

            ...

            <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />

        </handlers>

        <modules runAllManagedModulesForAllRequests="true">

            ...

            <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />

        </modules>

    </system.web>

</configuration>

Wir sind nun fast fertig 😉 Wir legen uns nun noch einen eigenen ExceptionFilter an (unbehandelte Ausnahmen werden standardmĂ€ĂŸig sowieso von Elmah geloggt)


using System.Web.Mvc;
using Elmah;

namespace Prunked.Net.Flt
{
    public class ElmahErrorFilter : IExceptionFilter
    {
        #region IExceptionFilter Members

        public void OnException(ExceptionContext context)
        {
            if (context.ExceptionHandled)
            {
                ErrorSignal.FromCurrentContext().Raise(context.Exception);
            }
        }

        #endregion
    }
}

und registrieren diesen in unserer Applikation (dazu die Global.asax.cs öffnen)


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

Das sollte es schon gewesen sein. Am besten schaut ihr euch das Ergebnis einfach mal in eurer Entwicklungsumgebung unter http://localhost:<PORT>/elmah.axd an…

GrĂŒĂŸe,

prunkster / [TF2CM] prunked

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darĂŒber, wie deine Kommentardaten verarbeitet werden.