Могу ли я получить доступ к сети.конфигурация из точки входа веб-роли Azure?


У меня есть веб-роль Azure, и я хочу сохранить некоторые параметры в web.config под тегом <appSettings>. Да, я знаю о файлах конфигурации служб, но у меня есть причины предпочесть web.конфиг.

Когда я выполняю (из здесь):

System.Configuration.Configuration rootWebConfig =
    System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(null);
if (rootWebConfig1.AppSettings.Settings.Count > 0) {
}

Количество настроек всегда равно нулю, хотя я добавил пару ключ-значение под <appSettings>.

Что я делаю не так? Можно ли читать настройки из интернета.настройка из внутренней точки входа веб-роли?

2 4

2 ответа:

Причина этого заключается в том, что Microsoft представила полную возможность IIS начиная с Azure SDK 1.3. Побочным эффектом этого является то, что RoleEntryPoint отделяется от остальной части веб-приложения.

Следующий отрывок из блога Microsofts описывает то, что вы видите.

...с полным IIS, RoleEntryPoint работает под WaIISHost.exe , в то время как веб-сайт работает под обычным IIS w3wp.exe процесс.

... так что он ожидает его конфигурация должна быть в файле под названием WaIISHost.exe.config . Поэтому, если вы создадите файл с этим именем в своем веб-проекте и установите свойство " копировать в выходной каталог "в" копировать всегда", вы обнаружите, что RoleEntryPoint может читать это с удовольствием.

Помимо упомянутого решения, можно попробовать использовать режим размещенного веб-ядра (HWC) вместо полного режима IIS.


Обновление-изменения, внесенные в пакет SDK Azure 1.8

  • Azure SDK 1.3 -1.7 будет выглядеть в WaIISHost.exe.конфиг

  • Azure SDK 1.8+ будет выглядеть в WebRoleProjectName.файл DLL.config .

С последним изменением в SDK вы сможете разместить приложение .config в вашем проекте и ваша точка входа роли должны иметь доступ к нему.

Где ваш web.config, и где код, который вы выполняете?

Если он находится в методе OnStart() подкласса RoleEntryPoint, вы увидите записи в web.config в корне того же проекта - как правило, это сам проект Web deploy, а не ваш веб-сайт. Это позволяет Azure поддерживать несколько веб-сайтов в рамках одной роли веб-развертывания.