2009-09-08 5 views
2

J'ai configuré ELMAH exactement comme avec l'exemple d'application. Je tente de lancer une erreur de tester ELMAH en utilisant:Configuration ELMAH - les erreurs ne sont pas détectées

throw new InvalidOperationException(); 

Malheureusement cependant mon application va droit à l'erreur et ELMAH est ne rattrapent pas/enregistrer l'erreur. J'utilise ASP.NET 3.5. Je ne suis pas sûr de ce que je fais mal comme le Web.Config est exactement le même que l'échantillon

+0

@DKong: J'ai révisé un peu mon article, laissez-moi savoir si cela vous aide ... – RSolberg

+0

Voyez-vous la YSOD InvalidOperationException liée à votre code ci-dessus? Ou est-ce une exception différente? – mxmissile

+0

pouvez-vous poster votre web.config? (De toute évidence, supprimer toute information privée) –

Répondre

2

Depuis Elmah est open source, vous devez ajouter le code comme un projet dans votre solution et assurez-vous que vous avez visual studio briser toutes les exceptions. Il semble possible que Elmah lance une Exception qui serait avalée. Cette chose exacte se passait avec moi et c'était une permission sur la procédure stockée qui insère l'erreur.

ORIGINAL
Est-ce votre test dans un bloc try/catch? Si c'est le cas, vous devrez forcer explicitement la journalisation à se produire.

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

MY web.config SETUP

<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

pas essayer de bloquer le bloc pour le moment. Je cherche juste à obtenir la manipulation par défaut de base fonctionnant avant que j'essaie de signaler – Dkong

+0

+1 pour inclure le code source dans le projet. – melaos

5

Vérifiez votre web.config. J'ai eu le même problème jusqu'à ce que je réalise que j'ai oublié d'enregistrer le module. J'ai trouvé cet article plus de dotnetslackers utile.

+0

J'ai cette ligne, mais toujours pas de joie. – Dkong

+0

Doh, il me manquait cette ligne. C'était particulièrement vexant parce que ça fonctionnait en dev, mais je suis sur IIS 7 en dev, IIS 6 en prod ... Je me demande pourquoi je n'en avais pas besoin dans IIS? De toute façon, merci, c'était exactement ça. – CubanX