obtener net example connectionstrings conexion cadena asp app asp.net wcf

asp.net - net - obtener cadena de conexion app.config c#



¿Se puede leer un archivo web.config desde un archivo XML externo? (4)

Si puede, simplemente ponga las configuraciones en común en Machine.Config. Ambos pueden leer desde allí, y cada web.config puede anular cualquier valor que necesite.

Digo que si puedes, porque sé que muchas empresas de alojamiento no te permitirán modificarlo a menos que estés alquilando un servidor dedicado.

Tengo que duplicar algunas configuraciones (como la cadena de conexión) entre un archivo web.config que usa un host WCF y un archivo web.config que usa un cliente web.

Con el fin de no duplicar, ¿puedo hacer que ambos web.configs se lean de un archivo xml separado? Los dos web.configs pueden estar completamente en diferentes soluciones / proyectos, así que supongo que esto no es posible, pero quería obtener la opinión de otros.

PS: Entiendo que puedo usar una base de datos para almacenar todos los ajustes de configuración.


Un archivo de configuración puede apuntar a otros archivos de configuración siempre que los archivos estén en la misma ruta (incluidos los subdirectorios).

Aquí hay un ejemplo de mis ajustes de configuración:

<connectionStrings configSource="web/config/connectionStrings.config" /> <appSettings configSource="web/config/appSettings.config" /> <system.diagnostics configSource="web/config/diagnostics.config" /> <system.serviceModel> <bindings configSource="web/config/serviceModelBindings.config" /> <behaviors configSource="web/config/serviceModelBehaviors.config" /> <services configSource="web/config/serviceModelServices.config" /> <client configSource="web/config/serviceModelClient.config" /> </system.serviceModel>

En mi caso, tengo varias aplicaciones de Windows en una carpeta raíz que incluyen una aplicación web como una subcarpeta. Esto permite que el archivo de configuración de cada aplicación apunte a las configuraciones compartidas.



Sí, cualquier sección de configuración puede ser "externalizada", esto incluye cosas como <appSettings> , <connectionStrings> y muchas más.

Tendrías algo como esto en tu web.config:

<configuration> <appSettings configSource="appSettings.config" /> <connectionStrings configSource="connectionStrings.config" /> <system.web> <pages configSource="pages.config" /> <httpHandlers configSource="httphandlers.config"> </system.web> </configuration>

Las configuraciones externalizadas solo contienen esa subsección en ellas:

httphandlers.config:

<httpHandlers> <remove verb="*" path="*.asmx"/> <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/> </httpHandlers>

Tenga en cuenta que no puede externalizar toda la parte <system.web> , ya que es un grupo de sección de configuración , no una sección de configuración, pero puede externalizar la mayoría de las subsecciones contenidas en system.web.