2010-07-22 18 views
24

Estoy usando elmah (v1.1.11517.0) y estoy tratando de mover la configuración a una fuente externa.Archivos de configuración externa con elmah

Mi configuración es actualmente la siguiente manera:

<?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 es feliz y funciona muy bien, sin embargo, para ELMAH consigo el error

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

que es un dolor, el archivo ELMAH es, sin duda existe , pero algo no es feliz

¿Qué podría estar causando esto?

+0

Han pasado seis meses. Debes seleccionar una respuesta. – jessegavin

Respuesta

42

La razón por la que no puede usar el elemento configSource para elmah es porque elmah se define como un grupo de sección. Puede usar configSource en Secciones. Es por eso que funciona en log4net.

Si necesita el config-archivo separado para la web a la implementación como Dan Atkinson que podría hacer lo siguiente:

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

La desventaja es que se necesita un archivo de configuración para cada sección. Pero a menudo haces eso para proyectos de despliegue web.

+1

Esto no funcionará; debe rodear etc. en una etiqueta . – UpTheCreek

+0

Tiene toda la razón. Hice los cambios a mi ejemplo. – Falle1234

+0

Gran respuesta. ¡Gracias! –

1

He añadido una recompensa a esta pregunta ya que también me gustaría saber la respuesta a esto.

Lo necesito porque utilizo la funcionalidad de Despliegue Web que reemplaza los archivos por su atributo configSource.

Mientras tanto, puede mover los contenidos de elmah.config a su web.config, reemplazando el <elmah configSource="..." />.

+0

¿Estás seguro de que esto es un problema? Consulte esta muestra web.config del trunk de elmah. http://code.google.com/p/elmah/source/browse/trunk/samples/web.config Parece una situación admitida. – madaboutcode

+4

No funciona. –

+0

Tomé mi ejemplo original directamente desde el maletero de elamh y lo he usado antes sin problemas. Atascado en un proyecto actual. – ilivewithian

Cuestiones relacionadas