【问题标题】:How can I use a different web.config file for each Azure deployment slot?如何为每个 Azure 部署槽使用不同的 web.config 文件?
【发布时间】:2015-06-14 02:42:32
【问题描述】:

我有几个 Azure 部署槽:开发、暂存、生产等。

我想创建一组 web.config 文件,每个部署槽一个。所以web-dev.config、web-staging.config等等

我不想在 Azure 中使用特定于插槽的设置,因为如果您有不止一两个设置,将所有设置都放在一个文本文件中似乎要容易得多。

我不想在单个 web.config 文件上编写 XML 转换,因为那太疯狂了。配置文件已经足够复杂,无需额外的间接层。即使我不这么认为,web.config 转换似乎也与构建配置相关联,而不是与部署目标相关联。我不想为了我的部署过程而扭曲我的构建过程。

我知道跨文件复制和粘贴配置设置很糟糕,但我们就是这样。在 MS 的某个人修复 ASP.net 中的配置之前,我只想为每个部署目标创建一个文件,然后就这样结束了。

我该怎么做?

【问题讨论】:

    标签: asp.net azure


    【解决方案1】:

    你有几个选择。

    最明显的是transformations。我不知道你为什么这么快就打折扣:只有少数设置应该在环境之间改变,对吧?

    或者您可以拥有多个 .config 文件,然后将其作为部署脚本的一部分(我希望您不只是使用 VS 进行部署)。您的脚本可以选择正确的文件并将其重命名为 web.config。

    当然,您可以将所有应用程序设置和连接字符串内容(甚至可能更多)移出 web.config 文件并使用其他配置系统。也许是一个巨大的 XML 或 JSON 文件,其中包含每个环境的所有设置。或者也许使用环境变量。

    确实,您可以自行编写部署脚本并根据需要设置配置。这不是“取决于 Microsoft”,而是取决于您,尽管它们使在 ASP.NET 5 中跨多个源使用通用配置系统变得更加容易。

    【讨论】:

    • 使用VS部署有什么问题?我是唯一一个从事这个项目的人,开发自己的部署脚本电池似乎是在重新发明轮子。
    • @JohnShedletsky 因为 VS 是有限的。使用自定义部署脚本并没有重新发明轮子。事实上,Microsoft 鼓励您这样做。您可能想要做的一些事情:将文件签入源代码控制、运行单元测试、在构建测试失败时通知您、修改配置文件、将文件复制到 Azure、如果复制不起作用则通知您、执行迁移、获取NuGet 或 Bower 包,编译 LESS、SASS、CoffeesScript 或 TypeScript,缩小 JS 和 CSS 文件,在部署完成时通知您。
    • 对我来说这些听起来像是非常常见的任务,我认为这是你的观点。我的观点是,如果每个人都编写自己的代码来处理这些任务,这似乎是一种巨大的浪费。在我作为一个单人团队寻求最大生产力的过程中,部署对于基本上是 xcopy 的东西来说是一个巨大的时间。
    • @JohnShedletsky 每个人都有不同的部署用例。你的需求不符合我的需求,我的需求也不符合其他任何人。这就是自定义脚本如此有意义的原因。它使您可以完全控制您的部署。更重要的是,它并不需要太多的努力。您可以复制您在 Internet 上找到的其他人的脚本并对其进行修改以满足您的需要。只需在网络上搜索“Azure 部署脚本”即可。或者,如果您知道如何编写 Powershell(我不知道)或 Windows 命令文件,您也可以这样做。
    • 感谢您的帮助!目前,我决定制作自己的配置类,它为不同环境包装了一个巨大的设置哈希表。
    猜你喜欢
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多