【问题标题】:Where is web.config file when running Azure web role in Compute Emulator?在计算模拟器中运行 Azure Web 角色时,web.config 文件在哪里?
【发布时间】:2011-12-03 01:04:34
【问题描述】:

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

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

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

【问题讨论】:

  • 我假设您使用的是托管 Web 核心网络角色。对吗?
  • @jmac:我猜是“IIS 模式”——我在角色定义中有<Sites>

标签: asp.net deployment azure web-config azure-web-roles


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      尽管在 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/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-08
        • 1970-01-01
        相关资源
        最近更新 更多