2010-07-22 16 views
24

Sto usando elmah (v1.1.11517.0) e sto provando a spostare la configurazione su una fonte esterna.File di configurazione esterna con elmah

mio config attualmente si presenta così:

<?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 è felice e funziona bene, ma per ELMAH ottengo l'errore

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

che è un dolore, il file ELMAH è sicuramente lì , ma qualcosa non è felice.

Cosa potrebbe causare questo?

+0

Sono passati sei mesi. Dovresti selezionare una risposta. – jessegavin

risposta

42

Il motivo per cui non è possibile utilizzare l'elemento configSource per elmah è perché elmah è definito come un gruppo di sezioni. Puoi usare configSource su Sezioni. Ecco perché funziona su log4net.

Se è necessario il config-file separato per il web-distribuzione come Dan Atkinson si potrebbe effettuare le seguenti operazioni:

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

Il rovescio della medaglia è che è necessario un file di configurazione per ogni sezione. Ma lo fai spesso per progetti di implementazione web.

+1

Questo non funzionerà - è necessario circondare in un tag . – UpTheCreek

+0

Hai assolutamente ragione. Ho apportato le modifiche al mio esempio. – Falle1234

+0

Ottima risposta. Grazie! –

1

Ho aggiunto una taglia a questa domanda come mi piacerebbe anche sapere la risposta a questo.

Mi serve perché utilizzo la funzionalità di distribuzione Web che sostituisce i file con il loro attributo configSource.

Nel frattempo, è possibile spostare il contenuto di elmah.config nel proprio web.config, sostituendo <elmah configSource="..." />.

+0

Sei sicuro che sia un problema? Guarda questo esempio web.config dal trunk elmah .. http://code.google.com/p/elmah/source/browse/trunk/samples/web.config Sembra uno scenario supportato. – madaboutcode

+4

Non funziona. –

+0

Ho preso il mio esempio originale direttamente dal trunk Elamh e l'ho usato prima senza problemi. Appena bloccato su un progetto attuale. – ilivewithian

Problemi correlati