Чтение ключа из Web.Config с помощью ConfigurationManager

Я пытаюсь прочитать ключи из файла Web.config в другом слое, чем веб-уровень (такое же решение)

Вот что я пытаюсь:

 string userName = System.Configuration.ConfigurationManager.AppSettings["PFUserName"]; string password = System.Configuration.ConfigurationManager.AppSettings["PFPassWord"]; 

И вот мой appSettings в файле Web.config :

  ....     ....  

Когда я отлаживаю username и password , просто null , поэтому он не получает значения ключей.

Что я делаю неправильно, чтобы читать эти ценности?

Вместо этого попробуйте использовать class WebConfigurationManager. Например:

 string userName = WebConfigurationManager.AppSettings["PFUserName"] 
  var url = ConfigurationManager.AppSettings["ServiceProviderUrl"]; 

Я нашел это решение весьма полезным . Он использует C # 4.0 DynamicObject для переноса ConfigurationManager. Поэтому вместо доступа к таким значениям:

  WebConfigurationManager.AppSettings["PFUserName"] 

вы обращаетесь к ним как к собственности:

 dynamic appSettings = new AppSettingsWrapper(); Console.WriteLine(appSettings.PFUserName); 

EDIT : добавление fragmentа кода в случае, если ссылка становится устаревшей:

 public class AppSettingsWrapper : DynamicObject { private NameValueCollection _items; public AppSettingsWrapper() { _items = ConfigurationManager.AppSettings; } public override bool TryGetMember(GetMemberBinder binder, out object result) { result = _items[binder.Name]; return result != null; } } 

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

Эта проблема возникает, если этот проект используется другим проектом. Убедитесь, что вы скопировали ключи установки приложения в app.config или web.config родительского проекта.

Также вы можете попробовать эту строку, чтобы получить строковое значение из файла app.config .

 var strName= ConfigurationManager.AppSettings["stringName"]; 

Полный путь для него

 System.Configuration.ConfigurationManager.AppSettings["KeyName"] 

Извините, я не тестировал это, но я думаю, что все сделано так:

 var filemap = new System.Configuration.ExeConfigurationFileMap(); System.Configuration.Configuration config = System.Configuration.ConfigurationManager.OpenMappedExeConfiguration(filemap, System.Configuration.ConfigurationUserLevel.None); //usage: config.AppSettings["xxx"] 
  • Зачем устанавливать «просто меня», а не «всех»?
  • напечатать переменную __m128i
  • подтвердите выпадающий список в asp.net mvc
  • Как я могу генерировать поистине (а не псевдо) случайные числа с помощью C #?
  • WPF Как получить доступ к элементу управления из DataTemplate
  • Будет ли новый возврат NULL в любом случае?
  • Бесплатный файл заблокирован новым Bitmap (filePath)
  • Каков максимальный размер, который может содержать массив?
  • Как sizeof (массив) работает во время выполнения?
  • Переменные экземпляра с подчеркиванием в Objective-C 2.0 и переименование с помощью @synthetize приводят к предупреждениям об оптимизации с помощью инструмента «Анализ» Xcode 4
  • Обнаружен параметр ASP.NET, который не применяется в режиме интегрированного управляемого конвейера
  • Interesting Posts

    Не найдено сопоставления для HTTP-запроса с URI … в DispatcherServlet с именем

    Как хранить GUID в таблицах MySQL?

    Как использовать мою собственную базу данных sqlite?

    почему этот простой алгоритм перетасовки приводит к предвзятым результатам? что является простой причиной?

    Зачем создавать «Implicitly Unwrapped Optionals», так как это означает, что вы знаете, что есть ценность?

    Angularjs JSONP не работает

    Самый простой способ настроить HTTP-прокси-запрос-отправитель в MAC-адресе?

    Как установить тайм-аут блокировки сокетов в boost asio?

    Почему у C ++ нет конструктора const?

    В Linux я могу сохранить программу в фоновом режиме даже после отключения?

    Получить список нулевых ссылочных кодов в Visual Studio

    Преимущества и недостатки #define против констант?

    @BatchSize умное или глупое использование?

    Есть ли способ в Linux обновить свойства пользователя / группы без повторного входа в систему?

    Как повторно включить backspace-навигацию в Chrome?

    Давайте будем гением компьютера.