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");
Article ID: 19, Created On: 3/26/2010, Modified: 2/15/2011