我可以从 Azure Web 角色入口点访问 web.config 吗?
我有一个 Azure Web 角色,我想在 web.config 中的
标记下存储一些设置。是的,我知道服务配置文件,但我有理由更喜欢 web.config。
当我执行时(来自此处):
System.Configuration.Configuration rootWebConfig =
System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(null);
if (rootWebConfig1.AppSettings.Settings.Count > 0) {
}
设置计数始终为零,尽管我在
下添加了一个键值对。
我做错了什么?是否可以从 Web 角色入口点内部读取 web.config 中的设置?
I have an Azure web role and I want to store some settings in web.config under <appSettings>
tag. Yes, I'm aware of service configuration files, yet I have reasons to prefer web.config.
When I execute (from here):
System.Configuration.Configuration rootWebConfig =
System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(null);
if (rootWebConfig1.AppSettings.Settings.Count > 0) {
}
settings count is always zero although I've added a key-value pair under <appSettings>
.
What am I doing wrong? Is it possible to read settings from web.config from inside web role entry point?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
原因是微软从 Azure SDK 1.3 开始引入了完整的 IIS 功能。
这样做的副作用是 RoleEntryPoint 与 Web 应用程序的其余部分隔离。
以下摘录自 Microsoft 博客文章描述了您所看到的内容。
除了提到的解决方案之外,一个选项可能是尝试使用托管 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,然后您的角色入口点应该可以访问它。
The reason for this is that Microsoft has introduced Full IIS capability since Azure SDK 1.3.
A side effect of this is that the RoleEntryPoint gets walled off from the rest of the web application.
The following excerpt from Microsofts blog post describes what you're seeing.
Apart from the solution mentioned, an option might be to try to use Hosted Web Core (HWC) mode instead of full IIS mode.
Update - changes introduced in Azure SDK 1.8
Azure SDK 1.3 -1.7 will look in WaIISHost.exe.config
Azure SDK 1.8+ will look in the WebRoleProjectName.dll.config.
With the newest change to the SDK, you should be able to place an app.config in your project and your role entry point should then have access to it.
您的
web.config
在哪里?您正在执行的代码在哪里?如果它位于
RoleEntryPoint
子类的OnStart()
方法中,您将在根目录中的web.config
中看到条目同一项目 - 通常,这是 Web 部署项目本身,而不是您的网站。这使得 Azure 可以在一个 Web 部署角色下支持多个网站。Where is your
web.config
, and where is the code you're executing?If it's in the
OnStart()
method of aRoleEntryPoint
subclass, you'll be seeing the entries in aweb.config
in the root of the same project - typically, this is the Web deploy project itself, not your Web site. This allows Azure to support multiple Web sites under one Web deployment role.