2009-06-06 6 views
21

Je ne trouve pas cela pour être facile à configurer; soit il manque une étape dans la configuration de l'installation, il ne fonctionne pas correctement, ou je ne comprends pas son but. Il y a quelque chose qui cloche ici. Le problème doit évidemment être moi. Je ne fais pas que ça marche. Voici ce que j'ai fait.Elmah questions de configuration de base/problèmes

Créer une toute nouvelle application mvc. Placez ce qui suit sur la page About.aspx.

<% throw new Exception ("blah"); %> Mettre du contenu ici.

Hit la page obtenir l'écran jaune à l'exception.

Ajoutez elmah.dll au répertoire bin.

Ajouter au fichier 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> 

Ajouter aux httpHandlers section suivantes:

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

Ajouter à la section modules:

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

Ajouter à la section du gestionnaire:

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

Ajouter une section ELMAH:

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

Ce qui est curieux est que la partie « .XmlFileErrorLog » de cette chaîne apparaissent en rouge comme une erreur de ReSharper indiquant qu'il « ne peut pas résoudre le symbole « .ctor » "qui quand je regarde le elmah.dll dans Reflector montre cet objet pour exiger une" chaîne "ou un" IDicationary "dans l'un ou l'autre des deux constructeurs publics. Je suis sous Windows Vista x64 avec VS 2008. Définissez l'autorisation sur le App_Data à tout le monde en tant que Co_Owner. La page http://localhost:xxxx/elmah.axd apparaît et ne montre aucune erreur. Quand j'appuie à nouveau sur ma page "A propos de", je vois encore l'écran jaune et elmah.axd ne montre toujours pas d'erreurs dans le dossier app_data.

Je remplacé les customerrors avec et créé la page associée:

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

La page personnalisés montre mais elmah.axd montre encore "Aucune erreur". App_data encore vide!

comme source pour commencer cette configuration je: code.google.com/p/elmah/wiki/MVC

Où suis-je foiré à?

~ - = Mike = - ~

Répondre

20

Vérifiez si ErrorLogModule est présent dans les deux configuration/system.web/httpModules (utilisé si vous êtes sur le développement Web Server) et configuration/system.webServer/modules (utilisé par IIS7). Voici le fragment de web.config du projet, je travaille actuellement sur:

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

Hope this helps

+0

Cela a fait! Je vous remercie! Il manquait dans la section . – Mike

+0

Merci .. cette documentation doit être mise à jour. Encore. –

+0

J'utilisais une configuration IIS 6 (l'application fonctionnait auparavant sur IIS 6 avec la journalisation elmah) sur IIS7 et j'ai oublié que les modules system.webserver n'étaient pas présents. Ma faute. –

11

Essayez de supprimer cette section:

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

Cela signifie que Elmah est configuré pour utiliser simplement la valeur par défaut dans -enregistrement de mémoire. Cela aide le dépannage car vous savez que ce n'est pas une question de permission de fichier. Donc, une fois que vous l'avez travaillé avec la journalisation en mémoire, vous pouvez ensuite le configurer pour vous connecter à un fichier XML.

Vous pouvez également jeter un oeil à cette question stackoverflow, How to get ELMAH to work with ASP.NET MVC [HandleError] attribute?, qui a été répondu par Atif Aziz lui-même.

HTHS, Charles

1

J'ai installé de NuGet elmah et elmah on XML log, n'a pas obtenu le fonctionalité attendu même si je pouvais accéder http://localhost/elmah.axd, mais pas de capture d'erreur.

J'ai donné l'autorisation d'écriture au compte IIS_IUSERS dans le dossier APP_DATA et il a commencé à fonctionner pour les erreurs HTTP 404 et les erreurs qui sont en dehors de l'infrastructure MVC. Mais il n'a pas enregistré d'exceptions à l'intérieur du MVC. La solution installait le package elmah.mvc à partir de nuget et il a commencé à capturer toutes les exceptions.

Si votre configuration est OK, alors il suffit d'installer le paquet elmah.mvc de NuGet et il devrait commencer à stocker les journaux aussi à l'intérieur mvc, non seulement HTTP 404.

0

Le problème est cette ligne

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

Remplacer par

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