2013-06-05 4 views
2

J'ai ce fichier de configuration:fichier de configuration pour C# service Windows

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <appSettings> 
     <add key="AuxAppStg0" value="5 iunie 2013 19:22:49" /> 
     <add key="AuxAppStg1" value="5 iunie 2013 00:00:00" /> 
     <add key="AppStg2" value="5 iunie 2013 19:23:04" /> 
    </appSettings> 
</configuration> 

Et je veux analyser en utilisant ce code:

// Get the configuration file. 
     System.Configuration.Configuration config = 
      ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 

     // Get the appSettings section. 
     System.Configuration.AppSettingsSection appSettings = 
      (System.Configuration.AppSettingsSection)config.GetSection("appSettings"); 



     foreach (KeyValueConfigurationElement i in appSettings.Settings) 
     { 

      Console.WriteLine("Key: {0} Value: {1}", i.Key, i.Value); 
     } 

     if (appSettings.Settings.Count != 0) 
     { 
      foreach (string key in appSettings.Settings.AllKeys) 
      { 
       string value = appSettings.Settings[key].Value; 
       Console.WriteLine("Key: {0} Value: {1}", key, value); 
      } 
     } 
     else 
     { 
      Console.WriteLine("The appSettings section is empty. Write first."); 
     } 

et tout ce que je reçois est: La section appSettings est vide. Écrivez en premier. Je l'ai trouvé here. Qu'est ce que je fais mal? Je veux faire un fichier de configuration pour un service C# Windows à lire au démarrage, est-ce une bonne approche, d'autres meilleures approches?

+0

Quel est le nom de votre fichier .config? Il devrait être le nom du fichier exécutable du service + .config à la fin, donc 'MyWindowsService.exe' devrait être' MyWindowsService.exe.config'. Il devrait également être dans le même répertoire que votre exécutable de service. Vous devez également redémarrer votre service Windows pour qu'il prenne en charge les modifications apportées au fichier. – vcsjones

+6

Pourquoi n'utilisez-vous pas ConfigurationManager.AppSettings? –

+0

@ matt-dot-net Bonne prise, +1 pour ça. – vcsjones

Répondre

4

Tout d'abord, vous devez importer la référence System.configuration dans votre projet.

Ensuite, vous pouvez utiliser quelque chose comme ceci:

private void ParseAppSettings() { 
    string value = string.Empty; 
    foreach (string key in System.Configuration.ConfigurationManager.AppSettings.AllKeys) 
    { 
     value = System.Configuration.ConfigurationManager.AppSettings[key]; 
     Console.WriteLine("Key: {0} Value: {1}", key, value); 
    } 
} 
Questions connexes