VSTS部署:无法替换appsettings.json中的变量

时间:2017-07-09 09:37:38

标签: c# asp.net-core azure-pipelines azure-pipelines-release-pipeline

我有一个相当标准的ASP.NET Core应用程序设置 - GitHub上的源代码控制与Azure上托管的实时应用程序,主分支更改触发VSTS上的CI构建。 数据库连接字符串位于appsettings.json中,通常指向localdb实例。为了部署到Azure,我希望它指向Azure SQL DB(我在第一次发布时忽略了它)。 应用程序服务本身在Azure上设置为没有数据库的应用程序服务 - 换句话说,我不应该在醒来之后这样做。但是,应用服务和数据库都链接到同一资源组。

我面临的问题是,每当我通过VSTS触发CI构建时,构建都会起作用,但是在尝试将连接字符串替换为CI构建变量中定义的连接字符串时,版本会失效。

  

2017-07-09T08:47:02.7205410Z ## [section]开始:部署Azure App Service   2017-07-09T08:47:02.7415413Z ======================================== ======================================   2017-07-09T08:47:02.7415413Z任务:Azure App Service Deploy   2017-07-09T08:47:02.7415413Z描述:使用Web Deploy / Kudu REST API更新Azure App服务   2017-07-09T08:47:02.7415413Z版本:3.3.9   2017-07-09T08:47:02.7415413Z作者:微软公司   2017-07-09T08:47:02.7415413Z帮助:   2017-07-09T08:47:02.7415413Z ======================================== ======================================   2017-07-09T08:47:06.5658468Z获取Azure App Service的连接详细信息:'BlackscarsSheetsSwtor'   2017-07-09T08:47:07.6978989Z ## [错误]错误:没有JSON文件与特定模式匹配:appsettings,json。

我已经尝试过解决方案here,只是遇到了完全相同的错误,但是日志显示的是** / appsettings.json而不是appsettings.json。

Deploy definition

这是appsettings.json文件

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=Telvee32.BlackscarsSheetsSwtor.Db;Trusted_Connection=True;MultipleActiveResultSets=true"
  },
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  }
}

这是我第一次使用构建和发布定义,因此完全有可能我已经完成了某些事情,但是实际的定义是由Azure自动创建的并且工作正常,直到我开始这样做,这给了应用程序依赖于DB,肯定需要正常工作。

1 个答案:

答案 0 :(得分:3)

我最初的想法是你拼错了JSON配置名称

Service:'BlackscarsSheetsSwtor' 2017-07-09T08:47:07.6978989Z ##[error]Error: NO JSON file matched with specific pattern: appsettings,json.

您可以使用逗号,代替.

您是否检查过这是否是导致问题的原因?