ConfigurationManager.AppSettings получает значение null?
Я не осознавал, что: "у меня есть web.config в отдельной библиотеке классов и он читает настройки приложения web.config из другого веб-приложения.
Я использую VS2010 target Framework 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>
Ответы
Ответ 1
Является ли код, который вы разместили выше, используя отдельную библиотеку классов в вашей основной библиотеке asp.net?
Если вы и вы добавили app.config в эту библиотеку с настройками, указанными выше, ConfigurationManager не читает правильный файл, так как это будет выглядеть в файле web.config для вашей библиотеки asp.net.
Ответ 2
Если вы УСТРОЙСТВО ДЛЯ ЕДИНИЦЫ, вам нужно КОПИЯ of the APP.CONFIG внутри ПРОЕКТА УСТРОЙСТВА ЕДИНИЦЫ
Ответ 3
Я знаю, что это старо, но я продолжаю возвращаться сюда :(
Обычная причина этого связана с контекстом.
Допустим, у вас есть решение с проектом надстройки VSTO и проектом библиотеки классов, если App.Config находится в библиотеке классов, он не будет работать, поскольку контекст запущенного приложения - это проект надстройки VSTO. Чтобы прочитать значения из конфигурации, вам нужно переместить файл конфигурации в проект с контекстом.
Если вы не знакомы с VSTO, притворяетесь, что я написал вместо этого проект ASP.Net и app.config в web.config.
Решение
Отличное решение - добавить ярлыки конфигурационного файла в другие проекты, чтобы вы обновляли только один файл:
![enter image description here]()
Это похоже на общий доступ к файлам сборки согласно ответу № 2: fooobar.com/questions/601368/...
Ответ 4
и
<appSettings>
<add key="StoreId" value="123" />
</appSettings>
находится в файле web.config
вашего приложения ASP.NET, а не в некотором app.config
файле, добавленном в проект библиотеки классов в Visual Studio, правильно? Вы не можете получить null
, если это так. Если вы добавили это в проект app.config
проекта библиотеки классов в Visual Studio, то получение нулевого значения является абсолютно нормальным поведением.
Ответ 5
Отказ от ответственности ;) Этот пост не является ответом на OP, так как это слишком поздно, но определенно это поможет читателям, которые попадут на эту страницу.
Проблема, с которой я столкнулся: ConfigurationManager.AppSettings["uName"]
возвратил null
в моем проекте С# web api.
Основные вещи, которые я проверял на :
1) В коде ConfigurationManager.AppSettings["uName"]
я использовал точный ключ 'uName
', как в файле web.config
,
т.е.
<appSettings>
<add key="uName" value="myValue" />
</appSettings>
проверил, что я неправильно набрал как userName
вместо uName
и т.д.
2) Поскольку это проект веб-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]()
Ответ 6
Я только что получил ответ DLL вызывается из другого проекта, не входящего в проект, где есть записи create.so в App.config, должны перейти к вызову конфигурационного файла проекта.
Например, у меня есть 2 проекта в моем решении, одна библиотека классов и другая консоль application.i добавили ссылку на библиотеку классов в приложении Console. Поэтому, если я добавлю файл app.config в проект библиотеки классов через null exception.it, Я добавил app.config в консольное приложение. Надеюсь, что он работает
Ответ 7
Настройки приложения загружаются в ConfigurationManager.AppSettings, но пользовательские настройки (в настройках свойств в ваших свойствах проекта) отсутствуют.
Ответ 8
Если в вашем файле конфигурации отсутствует элемент <configuration>
.
Ответ 9
Это случилось со мной, когда я тестировал библиотеку классов (DLL). Они оба были в одном проекте, но в App.config для библиотеки были настройки, которые мне нужны. Приложение, которое я написал для тестирования, нуждалось в настройках, потому что оно запускало библиотеку.
Ответ 10
Я получил эту проблему, когда я скопировал проект из проводника и переименовал проект. Это скопировало папку Debug и, поскольку у меня не было установлено "Копировать, если новее", это не переписало старый файл App.config.
Просто удалите папку Debug и перестройте. Надеюсь, что это помогает кому-то.
Ответ 11
Я согласен с приведенным выше ответом и хотел бы добавить еще несколько пунктов
Вы должны убедиться, что не ставите пробелы до и после:
см. код ниже:
private static string Client_ID = ConfigurationManager.AppSettings["ida:ClientId"];
если вы поставите пробел между ida: ClientId, он не будет работать и вернет ноль
убедитесь, что имена ключей имеют правильные значения
Вы можете попробовать WebConfigurationManager