首页 > 解决方案 > 如何修复:尽管在构建管道中设置了变量,但在 Azure Devops 中,连接字符串为空

问题描述

我在 Azure Devops 中的构建管道有问题,来自构建管道的变量没有替换 appsettings.json 中的空配置。下面有更多细节。

我目前的测试项目是使用 asp.net 核心技术构建的,并连接到 SQL Server。我还使用 Entity Framework Core 和 autofac。

要连接到 SQL 服务器,我使用 appsettings.json 配置:

{
  "ConnectionStrings": {
    "AzureDbConnectionString": ""
  }
}

但我的凭据存储在 secrets.json

{
  "ConnectionStrings": {
    "AzureDbConnectionString": "Server=tcp:servername-db-srv.database.windows.net,1433;Initial Catalog=dbname-db;Persist Security Info=False;User ID=user;Password=Password;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
  }
}

我已经配置了我的构建管道变量:名称:

ConnectionStrings--AzureDbConnectionString 

价值:

Server=tcp:servername-db-srv.database.windows.net,1433;Initial Catalog=dbname-db;Persist Security Info=False;User ID=user;Password=Password;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;

在构建管道中运行生成迁移脚本时会出现此问题。

Autofac.Core.DependencyResolutionException: An exception was thrown while activating λ:Microsoft.EntityFrameworkCore.DbContextOptions[] -> λ:Microsoft.EntityFrameworkCore.DbContextOptions -> λ:Microsoft.EntityFrameworkCore.DbContextOptions`1[[AspNetAutofacAzure02.Data.SchoolContext, AspNetAutofacAzure02, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]. ---> System.ArgumentException: The string argument 'connectionString' cannot be empty.
   at Microsoft.EntityFrameworkCore.Utilities.Check.NotEmpty(String value, String parameterName)

就像我提到的那样,生成脚本时似乎没有使用该变量。

我在这里做错什么了吗?

标签: asp.net-coreazure-devopsentity-framework-core

解决方案


你试过了ConnectionStrings:AzureDbConnectionString吗?这是覆盖 appsettings.json 的正常格式。或ConnectionStrings__AzureDbConnectionString

如果该值来自 keyvault 格式ConnectionStrings--AzureDbConnectionString,则只需映射一个新变量:ConnectionStrings:AzureDbConnectionString=$(ConnectionStrings--AzureDbConnectionString)


推荐阅读