2012-09-05 10 views
5

Quiero dividir web.config y tomar estas configuraciones en un archivo externo.Cómo dividir web.config?

<customErrors mode="Off" defaultRedirect="~/Home/ErrorPage"> 
    <error statusCode="403" redirect="~/Home/ErrorPage"/> 
    <error statusCode="404" redirect="~/Home/ErrorPage"/> 
</customErrors> 

<system.net> 
    <mailSettings> 
    <smtp deliveryMethod="Network" from="[email protected]"> 
     <network host="smtp.company.com" port="25" password="" userName=""/> 
    </smtp> 
    </mailSettings> 
</system.net> 

usar

<appSettings file="my.config"/> 

tener mi configuración exterior.

Pero, ¿qué hay de la configuración estándar?

Respuesta

7

Muchas (aunque no todas) de las secciones tienen una propiedad configSource, que puede usar de manera muy similar a cómo usa la propiedad file de la sección appSettings.

More info at MSDN


<customErrors configSource="MyErrors.config" /> 

    <system.net> 
    <mailSettings> 
     <smtp configSource="MySmtp.config" /> 
    </mailSettings> 
    </system.net> 
+0

Buena solución. ¡Gracias! La desventaja es que tengo que crear dos archivos de configuración para cada configuración. – podeig

+0

¿Puede 'configSource' hacer referencia al mismo archivo para varias secciones, o es necesario crear un archivo separado para cada sección? – crush

0

Puede separar algunas secciones del archivo, no se puede sacar todo en archivos separados.

También debe considerar lo que gana al hacer esto.

+0

Una cosa que se gana es la configuración del entorno sin la necesidad de crear configuraciones de compilación individuales para cada entorno solo para aprovechar la transformación web.config (que en realidad es un abuso del sistema). Puede dejar estos archivos de configuración externa especializados en el sistema de entorno y dejar la configuración global que puede cambiar de publicación a publicación en el web.config principal. – crush