2013-06-05 2 views
2

У меня есть этот файл конфигурации:Конфигурационный файл для C# 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> 

И я хочу, чтобы разобрать его, используя этот код:

// 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."); 
     } 

и все, что я получаю: Раздел AppSettings является пустой. Напишите сначала. Я нашел это here. Что я делаю неправильно? Я хочу сделать файл конфигурации для службы windows C#, чтобы читать при запуске, является ли это хорошим подходом, а другие лучше подходят?

+0

Что такое имя файла .config? Это должно быть имя исполняемого файла службы .config в конце, поэтому 'MyWindowsService.exe' должен быть' MyWindowsService.exe.config'. Он также должен быть в том же каталоге, что и ваш исполняемый файл службы. Вам также необходимо перезапустить службу Windows, чтобы она могла получить изменения в файле. – vcsjones

+6

Почему вы не используете ConfigurationManager.AppSettings? –

+0

@ matt-dot-net Хороший улов, +1 для этого. – vcsjones

ответ

4

Прежде всего, вы должны импортировать ссылку System.configuration в свой проект.

Затем вы можете использовать что-то вроде этого:

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); 
    } 
} 
Смежные вопросы