5

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

当我执行(从这里):

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

设置计数始终为零,尽管我在<appSettings>.

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

4

2 回答 2

12

原因是微软从 Azure SDK 1.3 开始就引入了完整的 IIS 功能。这样做的一个副作用是 RoleEntryPoint 与 Web 应用程序的其余部分隔离开来。

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

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

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

除了提到的解决方案之外,一个选项可能是尝试使用托管 Web 核心 (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放置在您的项目中,然后您的角色入口点应该可以访问它。

于 2012-10-16T09:39:31.263 回答
0

你的在哪里web.config,你正在执行的代码在哪里?

如果它在子类的OnStart()方法中RoleEntryPoint,您将在web.config同一项目的根目录中看到条目 - 通常,这是 Web 部署项目本身,而不是您的网站。这允许 Azure 在一个 Web 部署角色下支持多个网站。

于 2011-09-27T15:32:29.597 回答