【问题标题】:Publishing environment specific appsettings.ENV.json only to respective environment仅将特定于环境的 appsettings.ENV.json 发布到各自的环境
【发布时间】:2017-02-19 15:31:54
【问题描述】:

我的项目中有多个环境 - 一个开发环境、3 个测试环境、1 个集成环境和最终生产环境。

因此,我们决定使用特定于环境的 appsettings.ENVNAME.json

正如this answer 中提到的,我们关注的是project.json-

"publishOptions": {
  "include": [
    ...
    "appsettings.json",
    "appsettings.*.json",
    ...
  ]
}

通过这样做,我们将 appsetting.PROD.json 发布到甚至在不同的 TEST 环境中,这是错误的。

我明白,我们可以像这样在启动时控制 appsettings 文件的加载-

.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);

但在这种情况下,其他文件也可用。 (有人错误地更改了环境名称,它会开始获取其他环境的详细信息)

现在(根据我们的审计团队),我们需要将特定于环境的 appsettings.ENVNAME.json 发布到相应的环境。

如何使用 project.json 来实现这一点?我们需要为此编写单独的脚本吗?解决这种情况的最佳方法是什么?

【问题讨论】:

  • 某人错误地更改了 env 名称,它将开始获取其他环境的详细信息某人错误地发布了错误的 appsettings.envname 一样好。 json 文件,它将开始获取其他环境的详细信息,两者都容易出现相同类型的手动错误。您可以在示例中使您的环境文件成为强制性而不是可选的。如果有人将其更改为不存在的环境名称,则会出现错误。问题是,不是你的包应该决定哪个是环境模式,而是你的服务器部署它
  • 即使我强制要求,其他环境文件仍将成为我的发布文件夹的一部分。审计小组不会批准这个。在这里,我们的目的是根据环境名称自动化发布过程。
  • 您谈到如此严格的审核流程,但开发人员可以直接发布到登台和生产?为什么不将其发布到单独的位置,然后将所需的文件复制到所需的位置?

标签: visual-studio-2015 asp.net-core asp.net-core-mvc asp.net-core-1.0


【解决方案1】:

出于安全原因(有意或无意),我会(个人)避免在存储库或用于开发的计算机上包含暂存/生产配置文件。这些文件可能包含敏感信息,如您所说,如果使用或修改了错误的配置文件,可能会出现大错误。

此外,用于生产的配置文件不会发生太大变化,因此您可以在需要时轻松手动修改它。总而言之,我每个环境只使用一个appsettings.json。在我看来,它更安全,实际上更容易。

【讨论】:

    猜你喜欢
    • 2018-04-06
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多