2012-01-04 14 views
8

Necesito almacenar la configuración de configuración de la aplicación en un formato jerárquico en web.config o app.config. es posible? o tengo que almacenarlo en algún archivo XML o base de datos y usarlo en su lugar? el formato de par de valor llano no es suficiente para mí.almacenar la configuración de la aplicación jerárquica en web.config o app.config

<appSettings> 
     <Report1> 
      <add key="SourceFilePath" value="value1" /> 
      <add key="DestinationFolderPath" value="value2" /> 
     </Report1> 
     <Report2> 
      <add key="SourceFilePath" value="value1" /> 
      <add key="DestinationFolderPath" value="value2" /> 
     </Report2> 
    </appSettings> 

Es una aplicación de informes basado en la web y necesito para almacenar las rutas de archivo para los archivos de origen, paquetes SSIS, los detalles del servidor FTP etc.

Actualización: Si elijo la opción de sección de configuración personalizada ¿Puedo guardar la configuración en un archivo separado para mantener limpio el archivo web.config principal de la configuración de la aplicación?

+0

http://msdn.microsoft.com /en-us/library/2tw134k3.aspx –

+0

O http://www.google.com/search?q=Configuratio nSección –

Respuesta

6

No puede agregar elementos personalizados al appSettings.

La mejor manera de lograr un formato personalizado es escribir su propia clase ConfigurationSettings y usarla en la configuración.

Esto le permitirá almacenar datos de una manera fuertemente tipada, así como tener nombres de elementos y atributos significativos.

Consulte How to: Create Custom Configuration Sections Using ConfigurationSection en MSDN.

+0

gracias. parece que necesito escribir mucho código para ello. Sería bueno si hay una solución alternativa más fácil – RKP

+0

¿Puedo mantener la configuración de la aplicación en un archivo separado si elijo este enfoque? – RKP

+0

@RKP - Sí, esto es algo que se obtiene de forma gratuita (consulte la propiedad ['ConfigSource'] (http://msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.configsource.aspx)) . Al igual que puede tener un archivo separado para la sección 'connectionStrings'. – Oded

2

No puede hacer eso como sugiere.

Lo que puede hacer es agrupar bajo el nombre clave de los elementos:

<appSettings> 
     <add key="Report1:SourceFilePath" value="value1" /> 
     <add key="Report1:DestinationFolderPath" value="value2" /> 
     <add key="Report2:SourceFilePath" value="value1" /> 
     <add key="Report2:DestinationFolderPath" value="value2" /> 
</appSettings> 

La mejor manera de que sería definir su propio ConfigurationSection.

Aquí hay algunos enlaces sobre esto:

+0

¿Puedo mantener la configuración de la aplicación en un archivo separado si elijo este enfoque? – RKP

+0

¿Qué enfoque? ¿Nombres de teclas especiales o secciones de configuración? –

0

El mejor enfoque que sé es crear su propia clase Configuración y serializar/desiarilze en para leer/escribir tu aplicación. configuraciones.

También puede utilizar Admin. página de su sitio web para guardar todas las configuraciones en él.

Puede ser en su caso es mejor utilizar una base de datos para mantener todos los ajustes allí también.

3

No puede almacenar elementos xml de la manera que sugirió en las aplicaciones. Si necesita una jerarquía como usted ha mencionado probar uno de los siguientes enfoques

  1. tienda de elementos XML enteros en appsettings una analizar el código XML

    <appSettings> 
        <add key="Report1" value="<Report1 SourceFilePath=""value1"" DestinationFolderPath=""value2"" />" /> 
        <add key="Report2" value="<Report2 SourceFilePath=""value1"" DestinationFolderPath=""value2"" />" /> 
    </appSettings> 
    
  2. tienda el xml en la sección de configuración (ver respuestas anteriores)

  3. Utilice el proyecto DslConfig.
    Agrégalo con NuGet y mira agrega AppSpike para ver ejemplos.
    En su caso, podría crear una clase ReportConfig y usar esta clase como clase de configuración.
    Ejemplo:

    public class Report { 
        string SourceFilePath { get; set; } 
        string DesinationFolderPath { get; set; } 
    } 
    

crear una entrada de configuración del archivo en Variables.var

import ReportClassNamespace from ReportClassAssembly 

    Var["Report1"] = Report(SourceFilePath:"value1",DesinationFolderPath:"value2") 
    Var["Report2"] = Report(SourceFilePath:"value1",DesinationFolderPath:"value2") 
  1. Pruebe el proyecto NConfig
Cuestiones relacionadas