【问题标题】:appsettings.json in Deploy folder not updated to show production connection stringsDeploy 文件夹中的 appsettings.json 未更新以显示生产连接字符串
【发布时间】:2016-08-04 20:46:49
【问题描述】:

我正在使用 Visual Studio Professional 2015 Update 3 的完整补丁版本开发一个 .Net Core Web 应用程序

在我的应用程序的根目录中,我有一个标准的 appsettings.json 文件和一个 appsettings.Production.json 文件。 appsettings.Production.json 的某些属性具有不同的值。 appsettings.Production.json 文件正确嵌套在 Visual Studio 的解决方案资源管理器中。

我有一个名为 Production 的配置管理器条目。我有一个文件系统发布作业设置,也称为 Production,它将文件推送到名为 /Deploy

的文件夹中

当我发布时,appsettings.json 文件被推送到 /Deploy 文件夹,但它只包含默认值,而不是 appsettings 中的值。生产.json。无论我做什么,我都无法将生产值推送到 appsettings.json 文件中。

【问题讨论】:

  • 您找到解决方案了吗,我也遇到了同样的问题?

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


【解决方案1】:

appsettings.Production.json 应该作为单独的文件发布,它不会在发布过程中替换appsettings.json 的内容。

您应该将 appsettings.Production.json 添加到 project.json 文件中的 publishOptions 部分:

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

并在构造ConfigurationBuilder时添加:

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

【讨论】:

  • 我猜你的意思是 project.json。
  • 所以,这很奇怪。这意味着您会将生产数据库连接字符串等推送到每个环境中?似乎有点安全漏洞?通过 web.config 转换,只有环境的特定设置被推送到该环境。
  • @eat-sleep-code 您应该考虑不要将 appsettings 用于安全配置。相反,为此使用环境变量或用户机密
  • @eat-sleep-code 另一个选项是不要将 appsettings.Development.json 放入源代码管理中,也不要发布,而是稍后插入文件/让文件只存在于生产中。 (如果它在其他环境中丢失,可选的:true 将忽略,但当它存在时加载和覆盖)。但是,是的,Azure 等环境已经内置了对使用环境变量进行覆盖的支持。
  • 连接字符串呢?我是否真的发布了每个环境转换并根据操作系统级别的环境变量确定在运行时使用哪一个?这似乎是一个巨大的倒退。改变我在构建时需要的东西发生了什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多