Azure 应用程序设置未覆盖我的 appsettings.json 文件值

Azure Application Settings not overriding my appsettings.json file values

我已尝试将 appsettings.json 文件中的 DefaultConnection 添加到 Azure 的应用程序设置,但 Azure 不会覆盖连接字符串。

我能找到的任何文章或博客都指出我需要做的就是添加 appsettings.json 文件中所述的连接字符串名称,Azure 应该完成剩下的工作(例如 https://tehremo.wordpress.com/2016/10/07/override-connection-strings-app-settings-in-asp-net-core-and-azure-app-service/ ) 但是,当应用程序发布时,它正在使用我的本地连接字符串。

我的 Startup.cs 文件如下所示:

注意:我正在使用 VSTS 持续交付和 "Deploy Azure App Service" 发布任务进行发布。

我刚刚遇到了类似的问题(问题出在 PostgreSQL 连接字符串类型上,我不得不将其更改为自定义),现在它对我有用,所以这些是:

  1. 这是我的 appsettings.json 文件。我在 appsettings.Development.json 中设置了 'Psql' 的值,但在 appsettings.json 中它是空的。
  2. 这些是在 Azure 门户中设置的设置。请注意,有两种方法可以覆盖连接字符串。
  3. 这是我的 Startup.cs 文件的一部分。请注意 Startup 构造函数中设置的应用顺序以及我在 ConfigureServices 方法中获取连接字符串的方式(GetConnectionString 是标准扩展方法)。

来自我以下评论的附加信息:

Azure GUI(连接字符串、应用程序设置)在内部使用环境变量,因此 appsettings.json 将保持不变。

如果需要在 VSTS 发布期间覆盖 appsettings.json 的值 activity(在发布到 Azure 之前) , 可以使用 Colin 的 ALM Corner Build & Release Tools。这是 Colin's ALM Corner Build & Release Tools and tutorial.

的链接

感谢@pasul,非常感谢你的帮助,并帮助我找到了替代解决方案。为了使用 VSTS 任务进行部署并替换应用程序设置,您需要将变量添加到发布任务并将有问题的 json 文件传递​​到任务中以进行变量替换。

在 "Deploy Azure App Service" 发布任务中,您应该会看到 "File Transforms and Variable Substitution" 部分。在这里,您将提供要交换变量值的 json 文件的路径。

然后您需要单击发布环境上的选项按钮。您将在弹出菜单中看到配置变量的选项。

从这里您可以添加要修改的 json 属性 作为变量。在我的例子中是连接字符串。如下所示:

"ConnectionStrings.DefaultConnection"

然后只需输入您的连接字符串值。然后 VSTS 将在部署时为您换出这些值。