2009-06-06 14 views
21

Nie znajduję łatwego do ustawienia; albo brakuje kroku w konfiguracji konfiguracji, nie działa poprawnie, albo nie rozumiem jego przeznaczenia. Coś tu jest zdecydowanie nie tak. Problem oczywiście musi być mną. Po prostu nie działam. Oto co zrobiłem.Podstawowe pytania konfiguracyjne Elmah/problemy

Utwórz zupełnie nową aplikację mvc. Umieszczono następujące informacje na stronie About.aspx.

<% throw new Exception ("bla"); %> Umieść zawartość tutaj.

Hit strony uzyskać żółty ekran z wyjątkiem.

Dodaj elmah.dll do katalogu bin.

Dodaj do configurationSections pliku web.config:

<sectionGroup name="elmah"> 
    <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" /> 
    <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" /> 
    <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" /> 
    <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" /> 
</sectionGroup> 

Dodaj do HttpHandlers sekcja następujące:

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

Dodaj do sekcji modułów:

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

Dodaj do sekcja obsługi:

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

Dodaj sekcję ELMAH:

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

Co ciekawe, jest to, że „.XmlFileErrorLog” częścią tego łańcucha pojawi się czerwony jak ReSharper błędu wskazujący, że „Nie można rozwiązać symbol«.ctor» "które, gdy patrzę na elmah.dll w Reflectorze, pokazuje, że ten obiekt wymaga" ciągu "lub" identyfikatora "w jednym z dwóch publicznych konstruktorów.

Używam systemu Windows Vista x64 z VS 2008. Ustaw uprawnienia do App_Data dla wszystkich jako Co_Owner.

Strona http://localhost:xxxx/elmah.axd pojawia się i nie pokazuje żadnych błędów. Po ponownym uruchomieniu strony "O mnie" nadal widzę żółty ekran, a elmah.axd nadal nie pokazuje żadnych błędów w folderze app_data.

I podstawiony z CustomErrors i stworzył powiązanej strony:

<customErrors mode="On" defaultRedirect="GenericErrorPage.htm" /> 

zwyczaj stronie wyświetlone ale elmah.axd nadal pokazuje „żadnych błędów”. App_data wciąż pusta!

Jako źródło do rozpoczęcia tej konfiguracji użyłem: code.google.com/p/elmah/wiki/MVC

Więc gdzie mam zawiedli co?

~ - = Mike = - ~

Odpowiedz

20

Sprawdź, czy ErrorLogModule jest obecny zarówno w configuration/system.web/httpModules (stosowany jeśli jesteś na Development Web Server) i configuration/system.webServer/modules (wykorzystywana przez IIS7). Oto fragment sieci.config z projektu, Obecnie pracuję na:

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
     <httpModules> 
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/> 
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" /> 
     </httpModules> 
    </system.web> 
    <system.webServer> 
     <validation validateIntegratedModeConfiguration="false" /> 
     <modules runAllManagedModulesForAllRequests="true"> 
      <remove name="ErrorLog" /> 
      <remove name="ErrorMail" /> 
      <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" /> 
      <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" /> 
     </modules> 
    </system.webServer> 
</configuration> 

Nadzieja to pomaga

+0

Zrobiłem to! Dziękuję Ci! Brakowało go w sekcji . – Mike

+0

Dzięki .. ta dokumentacja musi zostać zaktualizowana. Nadal. –

+0

Używałem konfiguracji IIS 6 (aplikacja była wcześniej uruchomiona na IIS 6 z logowaniem elmah) na IIS7 i zapomniałem, że moduły system.webserver nie były obecne. Mój błąd. –

11

Spróbuj usunąć tę sekcję:

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

będzie to oznaczało, że ELMAH jest ustawiony tak, aby po prostu użyć domyślnego w -memory logowanie. Pomaga to w rozwiązywaniu problemów, ponieważ wiesz, że nie jest to zgoda na pliki. Więc gdy już uruchomisz rejestrowanie w pamięci, możesz ustawić go tak, aby logował się do pliku xml.

Możesz również sprawdzić to pytanie o stackoverflow, How to get ELMAH to work with ASP.NET MVC [HandleError] attribute?, na które odpowiedział sam Atif Aziz.

HTHS, Charles

1

zainstalowałem od Nuget elmah i elmah on XML log, nie dostał oczekiwaną funkcjonalnością chociaż mogłem dostęp http://localhost/elmah.axd, ale żaden błąd przechwytywania.

Dałem uprawnienia do zapisu dla konta IIS_IUSERS w folderze APP_DATA i rozpoczęło pracę z błędami HTTP 404 i błędami, które są poza infrastrukturą MVC. Ale nie rejestrował wyjątków wewnątrz mvc. Rozwiązanie to instalowało pakiet z nuget i zaczęło przechwytywać wszystkie wyjątki.

Jeśli config jest OK, a następnie wystarczy zainstalować pakiet elmah.mvc z Nuget i powinna rozpocząć przechowywania dzienników również wewnątrz MVC, nie tylko HTTP 404.

0

Problemem jest to linia

<customErrors mode="On" defaultRedirect="GenericErrorPage.htm"> 

Wymienić przez

<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">