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

Я согласен с приведенным выше ответом и хотел бы добавить еще несколько пунктов

  1. Вы должны убедиться, что не ставите пробелы до и после: см. код ниже:

    private static string Client_ID = ConfigurationManager.AppSettings["ida:ClientId"];
    

    если вы поставите пробел между ida: ClientId, он не будет работать и вернет ноль

  2. убедитесь, что имена ключей имеют правильные значения

  3. Вы можете попробовать WebConfigurationManager