2009-09-08 38 views
2

我已經完全按照示例應用程序設置了ELMAH。我試圖拋出一個錯誤使用測試ELMAH:ELMAH設置 - 錯誤未被捕獲

throw new InvalidOperationException(); 

然而不幸的是我的應用程序直接將錯誤和ELMAH不捕/記錄錯誤。我正在使用ASP.NET 3.5。我不確定我在做什麼錯誤,因爲Web.Config與樣本完全相同

+0

@DKong:我修改我的職務了一下,讓我知道這是否可以幫助你在所有... – RSolberg

+0

你看到出現InvalidOperationException YSOD關係到你上面的代碼?或者它是一個不同的例外? – mxmissile

+0

你可以發佈你的web.config? (顯然刪除任何私人信息) –

回答

2

由於Elmah是開源的,您應該將代碼作爲項目添加到您的解決方案中,並確保您擁有Visual Studio打破所有例外。 Elmah拋出將被吞噬的異常聽起來是可行的。這確切的事情發生在我身上,它是插入錯誤的存儲過程的權限。

ORIGINAL
您的測試是在try/catch塊嗎?如果是這樣,你必須明確地強制記錄發生。

Elmah.ErrorSignal.FromCurrentContext().Raise(ex); 

我的web.config設置

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

    <elmah> 
    <security allowRemoteAccess="0" /> 
    <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="TESTElmahConnectionString" /> 
    <errorFilter> 
     <test> 
     <equal binding="HttpStatusCode" value="404" type="Int32" /> 
     </test> 
    </errorFilter> 
    </elmah> 


<httpModules> 
    <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/> 
    <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah"/> 
    <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah"/> 
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
</httpModules> 

    <system.webServer> 
    <validation validateIntegratedModeConfiguration="false"/> 
    <modules> 
     <remove name="ScriptModule"/> 
     <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" /> 
     <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" /> 
     <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" /> 
    </modules> 
    <handlers> 
     <remove name="WebServiceHandlerFactory-Integrated"/> 
     <remove name="ScriptHandlerFactory"/> 
     <remove name="ScriptHandlerFactoryAppServices"/> 
     <remove name="ScriptResource"/> 
     <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    </handlers> 
    </system.webServer> 
+0

不嘗試catch塊。我只是希望得到基本的默認處理工作,然後我嘗試用信號 – Dkong

+0

+1將源代碼包含到項目中。 – melaos

5

仔細檢查你的web.config。我有同樣的問題,直到我意識到我忘記註冊模塊。

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

我發現這篇文章對dotnetslackers有幫助。

+0

我已經有了這條路線,但仍然沒有快樂。 – Dkong

+0

Doh,我錯過了這一行。這是特別令人煩惱,因爲它在開發中工作,但我在開發中的IIS 7,在生產中的IIS 6 ...我想知道爲什麼我不需要它在IIS中?無論哪種方式,謝謝,這就是它。 – CubanX

相關問題