2013-06-14 15 views
1

Мой сайт построен таким образом:значения прочитанной из внекорневой файла web.config

  • корневой каталог
    • Аркады
      • default.aspx
      • веб. config
    • default.aspx
    • web.config

У меня есть метод, который Method1() обращающийся:

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

Это значение существует в файле root/Arcade/Web.config, но не в файле root/web.config.

Когда я выполняю Method1() со страницы в каталоге /arcade, он отлично работает. Однако, когда я выполняю этот метод в качестве события времени от global.asax, он ищет значение в корневом файле web.config и выбрасывает System.NullException.

Кто-нибудь знает, как я могу указать для поиска значение в файле root/arcade/web.config, а не файл root/web.config?

ответ

3

Сначала вы можете открыть файл web.config.

Так что при вызове этого будет загружен ваш дочерний файл; обратите внимание, что вы указываете путь к папке, содержащей файл web.config, а не фактический файл конфигурации.

var config = WebConfigurationManager.OpenWebConfiguration("~/Arcade"); 

Теперь вы можете получить ваши ценности, как:

string MyValue = config.AppSettings.Settings["MySetting"].Value; 

Вы также можете получить список настроек приложения по телефону:

KeyValueConfigurationCollection appSettings = config.AppSettings.Settings; 
+0

Brilliant, спасибо! –

+1

Добро пожаловать :) – Darren