我可以从Azure Web角色入口点访问web.config吗?

sha*_*oth 5 .net settings web-config azure azure-web-roles

我有一个Azure Web角色,我想在web.config下<appSettings>标记一些设置.是的,我知道服务配置文件,但我有理由更喜欢web.config.

当我执行时(从这里):

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

设置计数始终为零,尽管我已经添加了一个键值对<appSettings>.

我究竟做错了什么?是否可以从Web角色入口点读取web.config中的设置?

Run*_*sen 12

原因是Microsoft自Azure SDK 1.3以来引入了完整的IIS功能.这样做的副作用是RoleEntryPoint与Web应用程序的其余部分隔离开来.

以下来自微软博客文章的摘录描述了您所看到的内容.

...使用完整的IIS,RoleEntryPoint在WaIISHost.exe运行,而网站在正常的IIS w3wp.exe进程下运行.

...所以它希望它的配置在一个名为WaIISHost.exe.config的文件中.因此,如果您在Web项目中创建具有此名称的文件并将"复制到输出目录"属性设置为"始终复制",您将发现RoleEntryPoint可以愉快地阅读此内容.

除了提到的解决方案,一个选项可能是尝试使用Hosted Web Core(HWC)模式而不是完整的IIS模式.


更新 - Azure SDK 1.8中引入的更改

  • Azure SDK 1.3 -1.7将在WaIISHost.exe.config查找

  • Azure SDK 1.8+将在WebRoleProjectName.dll.config中查找.

通过对SDK的最新更改,您应该能够在项目中放置app.config,然后您的角色入口点应该可以访问它.