with visual studio services net how dotnet create asp .net asp.net-mvc configuration windows-services

visual - Archivos de configuración compartidos en.NET



net core 2 windows service (2)

Bueno, podría "externalizar" ciertas partes de las configuraciones en archivos .config separados, y usarlos desde ambos lugares.

Por ejemplo, podría externalizar la configuración de su cadena de conexión de la siguiente manera:

<connectionStrings configSource="connectionStrings.config" />

y luego tener el archivo "connectionString.config" como este:

<?xml version="1.0" encoding="utf-8"?> <connectionStrings> <add name="ConfigurationDatabase" connectionString="server=.;Integrated Security=true;database=test"/> <add name="TestDatabase" connectionString="server=TEST;Integrated Security=true;database=test"/> </connectionStrings>

Básicamente, cualquier ConfigurationSection tiene esa configuración de "configSource", que le permite especificar un archivo externo para usar.

De esta forma, es posible que pueda compartir partes comunes de los dos archivos de configuración.

Bagazo

Tengo una solución que incluye tanto una aplicación web como una aplicación de servicio de Windows NT. Estos son, por supuesto, dos proyectos diferentes pero dentro de la misma solución. Sin embargo, comparten una gran cantidad de la misma configuración.

Actualmente tengo los mismos valores tanto en el archivo web.config como en el archivo app.config. Esto está empezando a complicarse y me gustaría tener un archivo de configuración compartido para las dos aplicaciones dentro de la solución.

  • ¿Hay algún problema para la aplicación web si la configuración no está en el nivel raíz de la aplicación web? ¿Hay limitaciones aquí?
  • ¿Perderé el almacenamiento en caché y el reciclaje automático de la aplicación web si no uso web.config?
  • ¿En general es una mala idea compartir la configuración como se describe?

Todavía necesitará un .config web ya que hay elementos de la configuración que son específicos de la web y que no estarán en el app.config de su servicio. Como dice Marc , el uso del atributo ConfigSource le permitirá compartir elementos comunes.

Tenga en cuenta que el elemento appSettings tiene una ligera diferencia: el atributo Archivo.

Especifica una ruta relativa a un archivo externo que contiene configuraciones de aplicación personalizadas. El archivo especificado contiene el mismo tipo de configuración que se especifica en appSettings para agregar, borrar y eliminar atributos, y usa el mismo formato de par clave / valor que esos elementos.

Esto se comporta de manera diferente al atributo ConfigSource, porque no tiene que reemplazar toda la sección con el archivo externo, solo puede contener elementos que desea tener además, o anular los valores:

Puede usar el atributo de archivo para especificar un archivo de configuración que proporcione configuraciones adicionales o anula las configuraciones que se especifican en el elemento appSettings.

Si está utilizando ConfigSource para compartir otros elementos, aún tendrá reinicios automáticos de la aplicación cuando se cambien los valores: la nota sobre el atributo restartOnExternalChanges se debe ignorar para las aplicaciones ASP.NET, sin embargo, usar el atributo File significará que los cambios se ganaron no causa un reinicio.

El contenido de los archivos externos aún debe almacenarse en caché, por lo que el rendimiento no debe verse afectado.