Чтение ключа из 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"] 
  • Можно ли переопределить MultipartFormDataStreamProvider, чтобы не сохранять загрузки в файловую систему?
  • Скопируйте значения карт в вектор в STL
  • Проверьте, является ли строка допустимой датой, используя DateTime.TryParse
  • Безглавой браузер для C # (.NET)?
  • Чтение пароля из std :: cin
  • Связывание видимости DataGridTextColumn
  • Как написать плагин OS X Finder
  • Как использовать boost bind с функцией-членом
  • Откройте папку с помощью Process.Start
  • C ++ Заголовок заголовка
  • Почему частные поля являются приватными для типа, а не экземпляра?
  • Interesting Posts

    Пакет Java не содержит ошибки

    Получите вывод терминала после быстрой команды

    Как пропустить проверку подлинности Windows в webservice с помощью jQuery?

    Выберите N случайных элементов из списка в C #

    R: Замена значений NA средним часом с помощью dplyr

    Запуск файлов / каталогов с помощью Gnome из командной строки

    Как аутентифицировать прокси-сервер при использовании classа HttpClient?

    Как загрузить несколько фотографий с Google Диска из URL-адресов?

    Изменить версию сборки в сборке .NET-сборки

    Принимать запятую и точку в виде десятичного разделителя

    Помогите получить изображение с сервлета на страницу JSP

    Как отключить окно «Оповещение безопасности» в элементе управления Webbrowser

    Как реализовать IEqualityComparer для возврата отдельных значений?

    Как удаленный доступ к малине pi подключен к VPN?

    Можно ли ограничить память, которую приложение может использовать?

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