2010-07-22 6 views
24

J'utilise elmah (v1.1.11517.0) et j'essaie de déplacer la config vers une source externe.Fichiers de configuration externes avec elmah

Ma config regarde actuellement comme ceci:

<?xml version="1.0"?> 
<configuration> 
    <configSections> 
     <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"/> 
      <section name="errorTweet" requirePermission="false" type="Elmah.ErrorTweetSectionHandler, Elmah"/> 
     </sectionGroup> 
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 
    </configSections> 
    <log4net configSource="Settings\RobDev\log4net.config" /> 
    <elmah configSource="Settings\RobDev\ELMAH.config" /> 
</configuration> 

log4net est heureux et fonctionne très bien, mais pour ELMAH je reçois l'erreur

Parser Error Message: The attribute 'configSource' cannot be specified because its name starts with the reserved prefix 'config' or 'lock'. 

Ce qui est une douleur, le fichier ELMAH est certainement là mais quelque chose n'est pas heureux.

Ce qui pourrait être à l'origine de cela?

+0

Cela fait six mois. Vous devriez choisir une réponse. – jessegavin

Répondre

42

La raison pour laquelle vous ne pouvez pas utiliser l'élément configSource pour elmah est que elmah est défini en tant que sectionGroup. Vous pouvez utiliser configSource sur les sections. C'est pourquoi cela fonctionne sur log4net.

Si vous avez besoin du fichier séparé de configuration pour le web-déploiement comme Dan Atkinson, vous pouvez faire ce qui suit:

<?xml version="1.0"?> 
<configuration> 
    <configSections> 
     <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"/> 
      <section name="errorTweet" requirePermission="false" type="Elmah.ErrorTweetSectionHandler, Elmah"/> 
     </sectionGroup> 
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 
    </configSections> 
    <log4net configSource="Settings\RobDev\log4net.config" /> 
    <elmah> 
     <errorLog configSource="Settings\RobDev\errorLog.config" /> 
     <errorMail configSource="Settings\RobDev\errorMail.config" /> 
     <errorFilter configSource="Settings\RobDev\errorFilter.config" /> 
     <errorTweet configSource="Settings\RobDev\errorTweet.config" /> 
     <security configSource="Settings\RobDev\security.config" /> 
    </elmah> 
</configuration> 

L'inconvénient est que vous avez besoin d'un fichier de configuration pour chaque section. Mais vous le faites souvent pour les projets de déploiement Web.

+1

Cela ne fonctionnera pas - vous devez entourer etc dans un tag . – UpTheCreek

+0

Votre absolument raison. J'ai fait les changements à mon exemple. – Falle1234

+0

Bonne réponse. Merci! –

1

J'ai ajouté une prime à cette question car j'aimerais aussi connaître la réponse à cette question. J'en ai besoin car j'utilise la fonctionnalité de déploiement Web qui remplace les fichiers par leur attribut configSource.

En attendant, vous pouvez déplacer le contenu de elmah.config dans votre fichier web.config, en remplaçant le <elmah configSource="..." />.

+0

Etes-vous sûr que c'est un problème? Consultez cet exemple web.config à partir du tronc d'elmah. http://code.google.com/p/elmah/source/browse/trunk/samples/web.config Cela ressemble à un scénario pris en charge. – madaboutcode

+4

Cela ne fonctionne pas. –

+0

J'ai pris mon exemple original directement à partir du tronc elamh et je l'ai déjà utilisé sans problème. Juste coincé sur un projet en cours. – ilivewithian

Questions connexes