Где находится файл web.config при запуске веб-роли Azure в эмуляторе вычислений?

Я создал пустой проект облачной службы Azure, а затем добавил туда веб-роль. Проект роли имеет файл web.config.

Когда я нажимаю F5, роль развертывается в эмуляторе вычислений. Зашел в папку где развернуты ролевые бинарники - там нет файла web.config.

Что происходит? Это потому, что я не установил «копировать всегда» в файле web.config? Какой файл web.config использует моя роль?


person sharptooth    schedule 07.10.2011    source источник
comment
Я предполагаю, что вы используете веб-роль Hosted Web Core. Это правильно?   -  person Jonathan McIntire    schedule 07.10.2011
comment
@jmac: я думаю, это режим IIS, в котором у меня есть <Sites> в определении роли.   -  person sharptooth    schedule 11.10.2011


Ответы (3)


Если ваша роль настроена на полный режим IIS (для тех, кто не знает о разнице между размещенным веб-ядром и полным IIS, см. этот пост в блоге), эмулятор вычислений должен развернуть веб-роль в IIS, где он может можно просмотреть в диспетчере IIS. На моей машине (я использую Azure SDK 1.5) физический путь к развернутой веб-роли — это мой каталог исходного кода.

person Jonathan McIntire    schedule 11.10.2011

Я думаю, что web.config скомпилирован в вашу сборку как контент в вашей среде разработки и недоступен напрямую, как в staging/prod. Вам не нужно использовать Копировать всегда, если он помечен как Контент, это все, что вам нужно. Вы можете использовать Environment.CurrentDirectory, чтобы увидеть свой корневой веб-путь.

person Community    schedule 12.10.2011

Несмотря на то, что предпочтительным способом хранения конфигурации в приложениях Windows Azure является файл ServiceConfiguration.cscfg, во многих случаях вам может потребоваться использовать обычный файл конфигурации .NET, особенно при настройке системных компонентов .NET или повторно используемых платформ. В частности, всякий раз, когда вы используете диагностику Windows Azure, вам необходимо настроить DiagnosticMonitorTraceListener в файле конфигурации .NET.

Когда вы создаете проект веб-роли, Visual Studio создает файл web.config для вашей конфигурации .NET. В то время как ваше веб-приложение может получить доступ к этой информации, ваш код RoleEntryPoint не может, потому что он не работает как часть вашего веб-сайта. Как упоминалось ранее, он запускается в рамках процесса с именем WaIISHost.exe, поэтому он ожидает, что его конфигурация будет находиться в файле с именем WaIISHost.exe.config. Поэтому, если вы создадите файл с этим именем в своем веб-проекте и установите для свойства «Копировать в выходной каталог» значение «Копировать всегда», вы обнаружите, что RoleEntryPoint может прочитать это с удовольствием. Это один из немногих случаев, которые я могу придумать, когда у вас будет два файла конфигурации .NET в одном проекте!

Вся информация взята из блога команды Azure, и я успешно использовал это решение — http://blogs.msdn.com/b/windowsazure/

person Toby Holland    schedule 15.07.2012