【问题标题】:It's possible to have one Web.config specific to Windows Azure?是否可以有一个特定于 Windows Azure 的 Web.config?
【发布时间】:2012-06-09 14:38:06
【问题描述】:

我有一个解决方案,其中包含两个项目,一个 Web 应用程序 和一个 windows azure 项目
要链接这两者,我在 Roles>Add>Web Role Project in Solution 中单击鼠标右键。

到目前为止一切都很好。我能够通过计算模拟器在多个实例上测试应用程序,并且如果我单击“在浏览器中查看”,也可以在本地对其进行测试。

我的目标是保持相同的代码在本地和云中运行,因此,仅将 azure 代码包含在一个块中,例如 if(RoleEnvironment.IsAvailable) { } else { }

问题:Web.config 文件对于 Web 应用程序azure 项目 和一些配置是通用的,例如TableStorageSessionStateProvider 将无法在本地工作,所以我的问题是......

<sessionState mode="Custom" customProvider="TableStorageSessionStateProvider">
    <providers>
        <clear/>
            <add name="TableStorageSessionStateProvider" type="Microsoft.Samples.ServiceHosting.AspProviders.TableStorageSessionStateProvider"/>
    </providers>
</sessionState>

问题:我可以拥有两个 web.config 文件吗?当我在本地浏览网站时调用一个,当我在计算模拟器中测试我的应用程序或将解决方案部署到 Microsoft Cloud 时使用一个?

【问题讨论】:

  • 顺便说一句,我不会在生产站点中使用表存储会话状态提供程序,因为它存在已知问题。提示是名称空间具有 .Samples。在里面。有关完整说明,请参阅此答案:stackoverflow.com/questions/3940891/…
  • 我会记住这一点...@knightpfhor 你建议我改用数据库存储吗?
  • 我还没有机会尝试,但我会使用新的分布式缓存,因为它是最便宜的选择:windowsazure.com/en-us/develop/net/how-to-guides/cache 如果你不想冒险,使用 SQL 服务器

标签: c# asp.net azure web-config


【解决方案1】:

Try this answer to a similar question。您也许可以使用Web.config transformations

我们的想法是在 Web.config 中进行本地测试,然后在 Web.cloud.config 中进行单独配置以进行云部署。

【讨论】:

    【解决方案2】:

    不,您不能拥有多个 web.config。 Peter 提到的转换不起作用,因为转换不是 azure 打包过程的一部分。

    如果可能,尽量使用代码和 RoleEnvironment.IsAvailable 进行设置。除此之外,您应该尽量避免让您的配置依赖于您的机器。

    如果实在没有办法,并且您绝对需要不同的配置文件,您可以设置一个额外的构建后任务,在发布模式下编译时将 web.config 文件替换为不同的文件。

    【讨论】:

    • 你说得对,转换不会作为打包过程的一部分运行,但它们会在创建包之前作为构建过程的一部分运行。我以前成功地使用过这种技术。
    • 当您将解决方案发布到 Azure 时,web.config 的转换非常有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 2011-06-26
    • 2022-09-27
    • 2011-09-04
    • 2015-05-03
    • 2021-02-27
    • 1970-01-01
    相关资源
    最近更新 更多