ConfigurationManager.AppSettings становится пустым? - PullRequest
28 голосов
/ 26 ноября 2010

Я не осознавал, что: 'у меня есть web.config в отдельной библиотеке классов, и' читал настройки приложения web.config из другого веб-приложения.

Я использую целевой каркас VS2010 3.5

Я не знаю, что здесь не так, но я получаю null, когда пытаюсь получить ConfigurationManager.AppSettings["StoreId"];

private string _storeid = GetStoreId;

public static string GetStoreId
{
    get
    {
        return ConfigurationManager.AppSettings["StoreId"];
    }
}

web.config:

<appSettings>
    <add key="StoreId" value="123" />
</appSettings>

Ответы [ 10 ]

32 голосов
/ 16 февраля 2016

Если вы ИСПЫТАНИЕ НА ЕДИНИЦУ вам необходимо КОПИЯ APP.CONFIG внутри ИСПЫТАНИЯ НА ЕДИНИЦУ

29 голосов
/ 26 ноября 2010

Код, который вы разместили выше, использует отдельную библиотеку классов для вашей основной библиотеки asp.net?

Если вы это сделали и добавили app.config в эту библиотеку с параметрами, опубликованными выше, то ConfigurationManagerне читает нужный файл, так как он будет искать файл web.config для вашей библиотеки asp.net.

13 голосов
/ 18 июля 2012

Я знаю, что это старо, но я продолжаю возвращаться сюда :(

Обычно это происходит из-за контекста.

Допустим, у вас есть решение с проектом надстройки VSTO и проектом библиотеки классов, если App.Config находится в библиотеке классов, он не будет работать, поскольку контекст запущенного приложения является проектом надстройки VSTO. Чтобы прочитать значения из конфигурации, вам нужно переместить файл конфигурации в проект с контекстом.

Если вы не знакомы с VSTO, притворяетесь, что я написал вместо этого проект ASP.Net и app.config для web.config.

Решение

Отличное решение - добавить ярлыки конфигурационного файла в другие проекты, чтобы вы обновляли только один файл: enter image description here

Это похоже на общий доступ к файлам сборки согласно ответу № 2: https://stackoverflow.com/a/15319582/495455

6 голосов
/ 26 ноября 2010

и

<appSettings>
    <add key="StoreId" value="123" />
</appSettings>

находится в файле web.config вашего приложения ASP.NET, а не в файле app.config, который вы добавили в проект библиотеки классов в Visual Studio, верно? Вы не можете получить null, если это так. Если вы добавили это в app.config вашего проекта библиотеки классов в Visual Studio, то получение нуля - совершенно нормальное поведение.

5 голосов
/ 25 августа 2017

Отказ от ответственности ;) Этот пост не является ответом на OP, так как это слишком поздно, но определенно это поможет читателям, которые попадут на эту страницу.

Проблема, с которой я столкнулся : ConfigurationManager.AppSettings["uName"] возвращая null в моем проекте C # web api.

Основные вещи, которые я проверил на :

1) В коде ConfigurationManager.AppSettings["uName"] я использовал точный ключ 'uName', поскольку яимел в файле web.config,

т.е.

<appSettings>
      <add key="uName" value="myValue" />
</appSettings>

Проверено , что я не неправильно набрал как userName вместо uName и т. Д.

2) Поскольку это проект Web API , он будет иметь файл web.config вместо app.config, а также в корневой папке вашего проекта.[см. изображение].

enter image description here

Решение :

Решение, которое сработало для меня,

Изменено ConfigurationManager.AppSettings["uName"] на WebConfigurationManager.AppSettings["uName"]

и

убедитесь, что у меня

<appSettings>
          <add key="uName" value="myValue" />
</appSettings>

в правом файле, т. е.

Правильный файл не web.config в папке просмотра

ни отладкаили выпустите web.config

enter image description here

2 голосов
/ 01 апреля 2013

Я только что получил ответ DLL вызваны из другого проекта, не в проекте, где есть записи create.so в App.config должны перейти к вызову файла конфигурации проекта.

Например, у меня есть 2 проекта вВ моем решении одна библиотека классов и другое консольное приложение. Я добавил ссылку на библиотеку классов в консольном приложении. Так что, если я добавляю файл app.config в проект библиотеки классов, то через нулевое исключение. Он работает, когда я добавил app.config в консольное приложение. Надеждаэто работает

1 голос
/ 28 сентября 2016

Настройки приложения загружаются в ConfigurationManager.AppSettings, но настройки пользователя (в настройках свойств в свойствах вашего проекта) - нет.

0 голосов
/ 08 июня 2018

У меня возникла эта проблема, когда я скопировал проект из проводника и переименовал проект.Это скопировало папку Debug и, поскольку у меня не было установлено «Копировать, если новее», это не переписало старый файл App.config.

Просто удалите папку Debug и перестройте.Надеюсь, это кому-нибудь поможет.

0 голосов
/ 15 апреля 2016

Это случилось со мной, когда я тестировал библиотеку классов (.dll). Они оба были в одном проекте, но в файле App.config для библиотеки были нужные мне настройки. Приложение, которое я написал для тестирования, нуждалось в настройках, потому что оно работало с библиотекой.

0 голосов
/ 26 ноября 2010

Если это весь ваш файл конфигурации, вам не хватает элемента <configuration>.

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