Как исправить: Строка подключения в Azure Devops является нулевой, несмотря на установку переменной в конвейере сборки - PullRequest
1 голос
/ 26 сентября 2019

У меня проблема с конвейером сборки в Azure Devops, поскольку переменные из конвейера сборки не заменяют пустую конфигурацию в appsettings.json.Ниже приведена более подробная информация.

Мой текущий тестовый проект построен с использованием базовой технологии asp.net и подключен к SQL-серверу.Я также использую Entity Framework Core и autofac.

. Для подключения к SQL-серверу я использую конфигурацию appsettings.json:

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

, но мои учетные данные хранятся в secrets.json

* 1009.*

Я настроил свою переменную конвейера сборки: Имя:

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)

Как я уже говорил, похоже, что переменная не используется при генерации скрипта.

Что-то не так я здесь делаю?

Ответы [ 2 ]

0 голосов
/ 28 сентября 2019

Вы пробовали ConnectionStrings:AzureDbConnectionString?Это нормальный формат для переопределения appsettings.json.Или ConnectionStrings__AzureDbConnectionString.

Если значение исходит от keyvault в формате ConnectionStrings--AzureDbConnectionString, просто сопоставьте новую переменную: ConnectionStrings:AzureDbConnectionString = $(ConnectionStrings--AzureDbConnectionString)

0 голосов
/ 27 сентября 2019

Вы можете добавить Задать свойство Json Property для замены ConnectionStrings.Возможно, вам придется сначала установить эту задачу в своей организации.enter image description here

Использование:

Сначала щелкните 3 точки на правой стороне, чтобы найти файл appsettings.json.

Затем задайте для Путь к свойству значение ConnectionStrings.AzureDbConnectionString.

В последний раз установите для Значение свойства переменную конвейера $(ConnectionStrings--AzureDbConnectionString)

enter image description here

...