2

我创建了一个空的 Azure 云服务项目,然后在那里添加了一个 Web 角色。角色项目有一个 web.config 文件。

当我按 F5 时,角色部署在计算模拟器中。我进入了部署角色二进制文件的文件夹——那里没有 web.config 文件。

发生了什么?那是因为我没有在 web.config 文件上设置“始终复制”吗?我的角色使用什么 web.config?

4

3 回答 3

1

如果您的角色配置为完全 IIS 模式(对于那些不知道托管 Web 核心和完全 IIS 之间的区别的人,请参阅此博客文章),计算模拟器应将 Web 角色部署到 IIS,以便在 IIS 管理器中查看它。在我的机器上(我正在运行 Azure SDK 1.5),部署的 Web 角色的物理路径是我的源代码目录。

于 2011-10-11T16:50:37.747 回答
0

我认为 web.config 已作为开发环境中的内容编译到您的程序集中,并且不能像在 staging/prod 中那样直接访问。您不需要始终使用 Copy,如果它标记为 Content 就是您所需要的。您可以使用Environment.CurrentDirectory查看您的网络根路径。

于 2011-10-12T19:36:51.687 回答
0

尽管在 Windows Azure 应用程序中存储配置的首选方式是在 ServiceConfiguration.cscfg 文件中,但在很多情况下您可能希望使用普通的 .NET 配置文件 - 特别是在配置 .NET 系统组件或可重用框架时。特别是当您使用 Windows Azure 诊断时,您需要在 .NET 配置文件中配置 DiagnosticMonitorTraceListener。

创建 Web 角色项目时,Visual Studio 会为您的 .NET 配置创建一个 web.config 文件。虽然您的 Web 应用程序可以访问此信息,但您的 RoleEntryPoint 代码却不能——因为它没有作为您网站的一部分运行。如前所述,它在名为 WaIISHost.exe 的进程下运行,因此它希望其配置位于名为 WaIISHost.exe.config 的文件中。因此,如果您在 Web 项目中创建具有此名称的文件并将“复制到输出目录”属性设置为“始终复制”,您会发现 RoleEntryPoint 可以愉快地读取此内容。这是我能想到的在同一个项目中有两个 .NET 配置文件的唯一情况之一!

所有信息均来自 Azure 团队博客,我已成功使用此解决方案 - http://blogs.msdn.com/b/windowsazure/

于 2012-07-15T23:14:53.437 回答