ConfigurationManager.AppSettings в возвращении нулевого - PullRequest
12 голосов
/ 07 июля 2011

Я использую ConfigurationManager.AppSettings [myKey], чтобы прочитать значение из файла app.config в моем приложении Windows, но возвращаемое значение всегда равно нулю, даже если ключ существует и имеет значение, если кто-нибудь знаетпочему?

Спасибо

Ответы [ 4 ]

19 голосов
/ 07 июля 2011

Одной, возможно, более простой альтернативой является использование файла настроек. Он инкапсулирует создание и обслуживание значений App.config в графическом интерфейсе конструктора и генерирует код для доступа к значениям.

Чтобы добавить файл настроек, щелкните правой кнопкой мыши свой проект в VS и нажмите «Добавить -> Новый элемент», выберите «Файл настроек» и дайте ему осмысленное имя, например, MainSettings.settings. Затем вы можете добавить элемент, например, Foo, укажите, является ли это приложением или общедоступным, определите его тип и присвойте ему значение. В своем коде вы можете получить значение, просто написав MainSettings.Default.Foo.

После компиляции вы можете изменить значение, отредактировав файл конфигурации. Настройка будет выглядеть следующим образом: -

<applicationSettings>
    <YourNamespace.MainSettings>
        <setting name="Foo" serializeAs="String">
            <value>Bar</value>
        </setting>
    </YourNamespace.MainSettings>
</applicationSettings>
9 голосов
/ 07 июля 2011

Трудно сказать, что вы указали здесь:

  1. Проверьте правильность написания значения в myKey
  2. Убедитесь, что вы смотрите на правильный app.config - если этоВызов находится в указанной библиотеке, и вы ожидаете, что значение будет получено из вызывающего проекта app.config, но в вашей библиотеке есть app.config, по некоторым причинам это может вызывать вашу проблему.
0 голосов
/ 17 января 2014

У меня возникла та же проблема, но когда я добавил пустую строку (+ "") в конце, она забирает строку в appsettings

например

string s = ConfigurationManager.AppSettings["myKey"] + "";
0 голосов
/ 01 апреля 2013

У меня есть два проекта в моем решении. Сначала я добавляю файл app.config в проект библиотеки классов, все экземпляры которого вызываются из консольного приложения. Я добавил эти записи в файл конфигурации в проекте класса lib

<appSettings> 
<add key="userName" value="user2" /> 
<add key="emilsLimit" value="50" /> 
</appSettings>

выдает нулевое исключение, когда я получаю их в классе в проекте библиотеки классов, но когда я удаляю app.config из проекта библиотеки классов и добавляю в проект консоли, это работает.

Примечание: ссылка на проект класса lib добавлена ​​в консоль

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...