none
Параметры приложения RRS feed

  • Вопрос

  • Здравствуйте. Неожиданно столкнулся с проблемой:
    В моём проекте в параметрах приложения есть пользовательские параметры, параметры приложения и строки подключения.
    Использую:

    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

    Проблема:

    config.ConnectionStrings.ConnectionStrings["myConnection"].ConnectionString // работает, всё ок.

    config.AppSettings.Settings["mySetting"].Value // не работает, config.AppSettings.Settings["mySetting"] == null. И в принципе, по отладчику, в секции AppSettings.Settings - Count = 0! Хотя есть целых три параметра приложения. В файле .config всё ок, параметры в секции appSettings есть.

    В чём может быть дело?


    18 февраля 2012 г. 6:03

Ответы

  • Посмотри пример на MSDN'е.

    Там сначала подключаются к спекции appSettings

    System.Configuration.AppSettingsSection appSettings =
                    (System.Configuration.AppSettingsSection)config.GetSection("appSettings");

    И только после этого используют

    string value = appSettings.Settings[key].Value;

    • Помечено в качестве ответа Abolmasov Dmitry 24 февраля 2012 г. 13:42
    20 февраля 2012 г. 5:59
    Модератор
  • Здравствуйте.

    Вот пример.

    app.config:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <connectionStrings>
        <add name="myConnection" connectionString="server=ABC;database=ABC;uid=A;pwd=B;"/>
      </connectionStrings>
      <appSettings>
        <add key="Freezetime" value="250"/>
        <add key="DeltaFreezetime" value="10"/>
      </appSettings>
    </configuration>

    Program.cs:

            static void Main(string[] args)
            {
                var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    
                Console.WriteLine(config.ConnectionStrings.ConnectionStrings["myConnection"].ConnectionString);
                Console.WriteLine(config.AppSettings.Settings["Freezetime"].Value);
                Console.WriteLine(ConfigurationManager.AppSettings.Get("Freezetime").ToString());
            }

    Для связи [mail]

    • Предложено в качестве ответа ulcerModerator 23 февраля 2012 г. 20:17
    • Помечено в качестве ответа Abolmasov Dmitry 24 февраля 2012 г. 13:42
    20 февраля 2012 г. 6:01

Все ответы

  • Посмотри пример на MSDN'е.

    Там сначала подключаются к спекции appSettings

    System.Configuration.AppSettingsSection appSettings =
                    (System.Configuration.AppSettingsSection)config.GetSection("appSettings");

    И только после этого используют

    string value = appSettings.Settings[key].Value;

    • Помечено в качестве ответа Abolmasov Dmitry 24 февраля 2012 г. 13:42
    20 февраля 2012 г. 5:59
    Модератор
  • Здравствуйте.

    Вот пример.

    app.config:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <connectionStrings>
        <add name="myConnection" connectionString="server=ABC;database=ABC;uid=A;pwd=B;"/>
      </connectionStrings>
      <appSettings>
        <add key="Freezetime" value="250"/>
        <add key="DeltaFreezetime" value="10"/>
      </appSettings>
    </configuration>

    Program.cs:

            static void Main(string[] args)
            {
                var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    
                Console.WriteLine(config.ConnectionStrings.ConnectionStrings["myConnection"].ConnectionString);
                Console.WriteLine(config.AppSettings.Settings["Freezetime"].Value);
                Console.WriteLine(ConfigurationManager.AppSettings.Get("Freezetime").ToString());
            }

    Для связи [mail]

    • Предложено в качестве ответа ulcerModerator 23 февраля 2012 г. 20:17
    • Помечено в качестве ответа Abolmasov Dmitry 24 февраля 2012 г. 13:42
    20 февраля 2012 г. 6:01