我有一个Azure网络角色,我想在<appSettings>
标记下的web.config中存储一些设置。是的,我知道服务配置文件,但我有理由更喜欢web.config。
执行时(来自here):
System.Configuration.Configuration rootWebConfig =
System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(null);
if (rootWebConfig1.AppSettings.Settings.Count > 0) {
}
尽管我在<appSettings>
下添加了一个键值对,但设置计数始终为零。
我做错了什么?是否可以从Web角色入口点读取web.config中的设置?
答案 0 :(得分:12)
原因是Microsoft自Azure SDK 1.3以来引入了完整的IIS功能。 这样做的副作用是RoleEntryPoint与Web应用程序的其余部分隔离开来。
以下摘自微软的blog post摘录描述了您所看到的内容。
...使用完整的IIS,RoleEntryPoint在 WaIISHost.exe 下运行,而网站在正常的IIS w3wp.exe 进程下运行。
...因此它希望其配置位于名为 WaIISHost.exe.config 的文件中。因此,如果您在Web项目中创建具有此名称的文件并将“复制到输出目录”属性设置为“始终复制”,您将发现RoleEntryPoint可以愉快地阅读此内容。
除了提到的解决方案之外,选项可能是尝试使用Hosted Web Core(HWC)模式而不是完整的IIS模式。
Azure SDK 1.3 -1.7将在 WaIISHost.exe.config
Azure SDK 1.8+将在 WebRoleProjectName.dll.config 中查找。
通过对SDK的最新更改,您应该能够在项目中放置 app.config ,然后您的角色入口点就可以访问它了。
答案 1 :(得分:0)
您的web.config
在哪里?您正在执行的代码在哪里?
如果它位于OnStart()
子类的RoleEntryPoint
方法中,您将在同一项目的根目录中看到web.config
中的条目 - 通常,这是Web部署项目本身,而不是您的网站。这允许Azure在一个Web部署角色下支持多个Web站点。