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

时间:2017-07-25 09:00:46

标签: azure asp.net-core appsettings

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

enter image description here

enter image description here

我可以找到的任何文章或博客都指出我需要做的就是在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文件如下所示:

enter image description here enter image description here

注意:我使用VSTS持续交付发布"部署Azure App Service"发布任务。

2 个答案:

答案 0 :(得分:32)

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

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

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

    如果需要在VSTS发布期间覆盖 appsettings.json的值活动(在将其发布到Azure之前),Colin的ALM Corner Build &安培;可以使用发布工具。以下是指向Colin's ALM Corner Build & Release Toolstutorial的链接。

答案 1 :(得分:5)

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

在"部署Azure App Service"发布任务你应该看到"文件转换和变量替换"部分。在这里,您将提供要交换变量值的json文件的路径。

enter image description here

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

enter image description here

从这里,您可以将要修改的json属性添加为变量。在我的情况下连接字符串。这将如下所示:

enter image description here

" ConnectionStrings.DefaultConnection"

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