Obsługa błędów za pomocą modułu ELMAH

Aby poprawnie zapisać błędy występujące w aplikacjach serwery IIS Webio mają domyślnie zainstalowany moduł ich logowania o nazwie ELMAH (http://code.google.com/p/elmah/) skompilowany w innej niż domyślna przestrzeni nazw (WebioElmah) po to aby nie zakłócać pracy bibolioteki Elmah instalowanej przez użytkowników na własną rękę. Poniższy opis przedstawia w jaki sposób należy uaktualnic plik web.config aby włączyć logowanie błędów do plików XML lub bazy danych SQLite:

<configuration
    <configSections
        ... 
        <sectionGroup name="webioelmah"
            <section name="security" requirePermission="false" type="WebioElmah.SecuritySectionHandler, WebioElmah, Version=1.1.11517.0,Culture=neutral, PublicKeyToken=93297c12d98e0131"/> 
            <section name="errorLog" requirePermission="false" type="WebioElmah.ErrorLogSectionHandler, WebioElmah, Version=1.1.11517.0,Culture=neutral, PublicKeyToken=93297c12d98e0131" /> 
        </sectionGroup
    </configSections
    <webioelmah
        <security allowRemoteAccess="yes" /> 
        <!-- NALEŻY WYBRAĆ JEDEN TYP LOGOWANIA BŁĘDÓW. NIEZALEŻNIE OD TYPU LOGOWANIA NALEŻY KATALOGOWI App_Data NADAĆ POZWOLENIE DO ZAPISU Z POZIOMU MENEDŻERA PLIKÓW W PANELU ZARZĄDZANIA KONTEM HOSTINGOWYM --> 
        <!-- WPIS DLA LOGOWANIA BŁĘDÓW DO PLIKÓW XML:--> 
        <errorLog type="WebioElmah.XmlFileErrorLog, WebioElmah, Version=1.1.11517.0,Culture=neutral, PublicKeyToken=93297c12d98e0131" logPath="~/App_Data"  />  
        <!-- WPIS DLA LOGOWANIA BŁĘDÓW DO BAZY DANYCH SQLite:--> 
        <errorLog type="WebioElmah.SQLiteErrorLog, WebioElmah, Version=1.1.11517.0,Culture=neutral, PublicKeyToken=93297c12d98e0131" connectionStringName="WebioElmah.SQLite" /> 
    </webioelmah
       
    <connectionStrings
        <!-- PONIŻSZY WPIS NALEŻY DODAC W TEJ SEKCJI WYŁĄCZNIE JEŚLI WYKORZYSTYWANA JEST BAZA DANYCH SQLite--> 
        <add name="WebioElmah.SQLite" connectionString="Data Source=~/App_Data/errors.s3db"/> 
    </connectionStrings
    <system.web
        ... 
        <httpHandlers
            ... 
            <add verb="POST,GET,HEAD" path="WebioElmah.axd" type="WebioElmah.ErrorLogPageFactory, WebioElmah, Version=1.1.11517.0, Culture=neutral, PublicKeyToken=93297c12d98e0131" /> 
        </httpHandlers
        ... 
        <httpModules
            ... 
            <add name="ErrorLog" type="WebioElmah.ErrorLogModule, WebioElmah, Version=1.1.11517.0, Culture=neutral, PublicKeyToken=93297c12d98e0131" /> 
        </httpModules
        ... 
    </system.web
    ... 
    <system.webServer
        ... 
        <validation validateIntegratedModeConfiguration="false" /> 
        ... 
        <handlers
            ... 
            <add name="WebioElmah.axd_POST,GET,HEAD" path="WebioElmah.axd" verb="POST,GET,HEAD" type="WebioElmah.ErrorLogPageFactory, WebioElmah, Version=1.1.11517.0, Culture=neutral, PublicKeyToken=93297c12d98e0131" preCondition="integratedMode,runtimeVersionv2.0" /> 
        </handlers
        ... 
        <modules
            ... 
            <add name="ErrorLog" type="WebioElmah.ErrorLogModule, WebioElmah, Version=1.1.11517.0, Culture=neutral, PublicKeyToken=93297c12d98e0131" preCondition="managedHandler" /> 
        </modules
        ... 
    </system.webServer
    ... 
</configuration>


W przypadku gdy aplikacja wykorzystuje .NET Framework 4.0 sekcja system.webServer / handlers powinna zawierac uaktualniony wpis:

<handlers>
    ...
    <add name="WebioElmah.axd_POST,GET,HEAD" path="WebioElmah.axd" verb="POST,GET,HEAD" type="WebioElmah.ErrorLogPageFactory, WebioElmah, Version=1.1.11517.0, Culture=neutral, PublicKeyToken=93297c12d98e0131" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>


Po uaktualnieniu pliku web.config (linijki zawierające "..." oznaczają pozostałe wpisy znajdujące sie w pliku konfiguracyjnym) należy utworzyć katalog App_Data w głównym katalogu witryny, a wszystkie zapisane błędy będa widoczne pod adresem:
http://DOMENAWITRYNY/WebioElmah.axd

Aby uniemożliwić podgląd ww. strony należy zmienic jedną wartość w powyższej konfiguracji:

<security allowRemoteAccess="no" />

Jeśli aplikacja jest napisana w ASP.NET MVC należy dodać do pliku Global.asax ścieżkę do ignorowania:

routes.IgnoreRoute("WebioElmah.axd");


Wygodę i duży wybór metod płatności zapewnia Transferuj.pl
bazy danych domeny instalator aplikacji ogólne poczta elektroniczna zarządzanie witrynami
zabezpieczenie witryny za pomocą pliku .htaccess generator MachineKey
dział wsparcia technicznego dział sprzedaży dział płatności