2009-06-06 75 views
21

我不覺得這很容易設置;或者在安裝配置中缺少一個步驟,它不能正常工作,或者我實際上並不瞭解它的用途。這裏肯定有一些錯誤。問題顯然是我。我只是沒有得到這個工作。這是我所做的。Elmah基本設置問題

創建一個全新的mvc應用程序。 在About.aspx頁面放置以下內容。

<%throw new Exception(「blah」); %> 將內容放在此處。

點擊頁面會出現例外的黃色屏幕。

將elmah.dll添加到bin目錄。

添加到Web.config文件configurationSections:

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

添加到HttpHandlers的部分執行以下操作:

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

添加到模塊部分:

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

添加到處理器部分:

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

添加ELMAH部分:

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

什麼奇怪的是這裏的是,該字符串的「.XmlFileErrorLog」部分顯示爲紅色,表明它「不能解析符號‘.ctor’一個錯誤的ReSharper 「當我查看Reflector中的elmah.dll時,顯示此對象在兩個公共構造函數中都需要」字符串「或」IDicationary「。

我使用VS 2008運行Windows Vista x64。將App_Data的權限設置爲Co_Owner。

http://localhost:xxxx/elmah.axd頁面確實顯示沒有錯誤。當我再次點擊我的「關於」頁面時,我仍然看到黃色屏幕,並且elmah.axd仍然顯示app_data文件夾沒有錯誤。

我取代的customErrors與創造相關的頁面:

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

自定義頁面顯示,但elmah.axd仍顯示「沒有錯誤」。 App_data仍然爲空!

由於源啓動這個設置我用: code.google.com/p/elmah/wiki/MVC

所以我在哪裏,在搞砸了?

〜 - = =邁克 - 〜

回答

20

檢查ErrorLogModule是存在於configuration/system.web/httpModules(如果你是開發Web服務器上使用)和configuration/system.webServer/modules(由IIS7使用)。這是網絡的片段。從項目配置,我目前工作:

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

希望這有助於

+0

這做到了!謝謝!它在部分中缺失。 – Mike 2009-06-08 23:38:47

11

嘗試取出這一部分:

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

這將意味着ELMAH是設置只使用默認 - 內存日誌記錄。這有助於解決問題,因爲您知道這不是文件許可的事情。因此,一旦你使用了內存中的日誌記錄,你就可以將它設置爲登錄到一個xml文件。

你可能也想看看這個計算器問題,How to get ELMAH to work with ASP.NET MVC [HandleError] attribute?,這是通過與Atif阿齊茲本人回答。

HTHS, 查爾斯

1

我來自的NuGet elmahelmah on XML log安裝,並沒有得到預期的funcionality雖然我可以訪問http://localhost/elmah.axd,但沒有錯誤捕獲。

我給寫權限在文件夾APP_DATA帳戶IIS_IUSERS並開始工作了HTTP 404錯誤,並且是MVC架構之外的錯誤。但它沒有在mvc中記錄異常。該解決方案是安裝從的NuGet elmah.mvc包,並開始捕獲所有異常。

如果你的配置是OK,那麼距離的NuGet安裝包elmah.mvc,它應該也啓動內部存儲日誌MVC,而不僅僅是HTTP 404

0

問題是此行

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

更換它由

​​