web config - read - Archivos de configuración externa con elmah
web config configuration file c# (2)
Estoy usando elmah (v1.1.11517.0) y estoy tratando de mover la configuración a una fuente externa.
Mi configuración actualmente se ve así:
<?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á feliz y funciona bien, sin embargo, para elmah me sale el error
Parser Error Message: The attribute ''configSource'' cannot be specified because its name starts with the reserved prefix ''config'' or ''lock''.
Lo que es un dolor, el archivo elmah definitivamente está ahí, pero algo no es feliz.
Que podria estar causando esto?
He agregado una recompensa a esta pregunta, ya que también me gustaría saber la respuesta a esta pregunta.
Lo necesito porque uso la funcionalidad de Despliegue Web que reemplaza los archivos por su atributo configSource.
Mientras tanto, puedes mover el contenido de elmah.config a tu web.config, reemplazando el <elmah configSource="..." />
.
La razón por la que no puede usar el elemento configSource para elmah es porque elmah se define como una secciónGrupo. Puedes usar el configSource en las Secciones. Es por eso que funciona en log4net.
Si necesita el archivo de configuración separado para la implementación web como Dan Atkinson, puede 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>
El inconveniente es que necesita un archivo de configuración para cada sección. Pero a menudo lo haces para proyectos de despliegue web.