Параметры приложения Azure не переопределяют значения моего файла appsettings.json

Я попытался добавить DefaultConnection из моего файла appsettings.json в параметры приложения 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 с задачей выпуска «Развертывание службы приложений Azure».


person psycho    schedule 25.07.2017    source источник
comment
вы можете включить свой файл Startup.cs?   -  person rolspace    schedule 28.07.2017
comment
У меня та же проблема, но для меня это не VSTS, переменные env просто игнорируются. Я использую контейнер.   -  person Zorkind    schedule 24.07.2018


Ответы (2)


У меня была аналогичная проблема (проблема была с типом строки подключения PostgreSQL, мне пришлось изменить ее на пользовательскую), и теперь она работает для меня, так что это части:

  1. Это мой файл appsettings.json. У меня есть значение «Psql», установленное в моем appsettings.Development.json, но в appsettings.json оно оставлено пустым. введите описание изображения здесь
  2. Это параметры, которые задаются на портале Azure. Обратите внимание, что есть два способа переопределить строку подключения. введите описание изображения здесь
  3. Это часть моего файла Startup.cs. Обратите внимание на порядок применения параметров в конструкторе Startup и способ получения строки подключения в методе ConfigureServices (GetConnectionString - стандартный метод расширения). введите описание изображения здесь

Дополнительная информация из моих комментариев ниже:

В графическом интерфейсе пользователя Azure (строки подключения, параметры приложения) используются внутренние переменные среды, поэтому appsettings.json останется прежним.

Если необходимо перезаписать значение appsettings.json во время выпуска VSTS (до его публикации в Azure), можно использовать инструменты сборки и выпуска ALM Corner от Колина. Вот ссылки на инструменты сборки и выпуска ALM Corner от Колина и руководство .

person pasul    schedule 28.07.2017
comment
Привет. Я без радости попробовал то, что вы предложили. Я добавил свой код statrtup к моему вопросу - person psycho; 28.07.2017
comment
Привет, а как вы понимаете, что строка подключения не изменилась, ошибка при запуске сайта? Вы пробовали использовать настройку приложения вместо строки подключения («другой способ» на моем втором изображении)? Вы также можете попробовать использовать другое имя из DefaultConnection. Кстати, у вас appsettings.json настроен как необязательный, это было сделано специально? - person pasul; 28.07.2017
comment
Я знаю, что это относится к неправильной строке подключения, потому что у меня есть журналы, которые говорят мне, что соединение с базой данных недействительно при входе в систему, а также я вижу, что строка подключения неверна, когда я перехожу к appsettings.json в Kudu. Я изменил необязательный параметр на false, но все равно без радости. - person psycho; 28.07.2017
comment
Appsettings.json останется прежним, это правильно. Параметры приложения и строки подключения, которые вы указываете в пользовательском интерфейсе Azure, переходят в переменные среды, и, помещая AddJsonFile (..), AddEnvironmentVariables (), вы определяете их приоритет. Поэтому, если имена правильные, вы должны получить значение из переменных среды. - person pasul; 28.07.2017
comment
Я считаю, что это связано с разницей между веб-развертыванием и развертыванием службы приложений Azure в задаче выпуска VSTS. Веб-развертывание будет работать таким образом, но я ищу, чтобы он работал через CICD - person psycho; 28.07.2017
comment
Тогда я не совсем понимаю, какого конечного результата вы пытаетесь достичь. Вы хотите, чтобы ваша задача выпуска VSTS имела переменную строки подключения и вставляла значение переменной в appsettings.json и развертывала его в Azure со значением, уже указанным в файле? Или вы хотите указать значение в пользовательском интерфейсе строк подключения Azure и сделать его используемым вашим веб-приложением во время выполнения? - person pasul; 28.07.2017
comment
Я пытался просто использовать vsts для выпуска приложения с помощью готовой задачи «Развертывание службы приложений Azure». Тогда я надеялся, что развернутый appsettings.json будет перезаписан значениями параметров приложения в графическом интерфейсе пользователя Azure. - person psycho; 31.07.2017
comment
Как я уже отмечал ранее, в графическом интерфейсе пользователя Azure используются внутренние переменные среды. В любом случае, если вы все сделаете правильно, вы сможете использовать параметр строки подключения / приложения, указанный в графическом интерфейсе пользователя Azure. Если вам действительно нужно перезаписать значение appsettings.json во время выпуска VSTS (до его публикации в Azure), вы можете использовать инструменты сборки и выпуска ALM Corner от Colin. - person pasul; 31.07.2017
comment
Не забудьте добавить пакет NuGet Microsoft.Extensions.Configuration.EnvironmentVariables для работы AddEnvironmentVariables (). - person nivs1978; 12.11.2018
comment
Кажется устаревшим. .NET Core уже снова совершенно другой. - person Florian Winter; 04.04.2019
comment
Пришел сюда, чтобы добавить то, что было решающим в моем случае (веб-приложение .NET Core 2.1), которое я нашел на шаге 2 этого ответа: для вложенных настроек в вашем appsettings.json убедитесь, что ключ в настройке Azure использует двоеточия ( :) для разделения уровней. Я использовал точки (.), А затем приложение просто не видит переменную среды, соответствующую настройке, и по умолчанию используется файл json - person Céryl Wiltink; 06.06.2019

Спасибо @pasul, ваша помощь была очень оценена и помогла мне найти альтернативное решение. Чтобы выполнить развертывание с помощью задачи VSTS и заменить параметры приложения, вам нужно будет добавить переменные в задачу выпуска и передать в задачу соответствующий файл json для подстановки переменных.

В задаче выпуска «Развертывание службы приложений Azure» вы должны увидеть раздел «Преобразование файлов и подстановка переменных». Здесь вы укажете путь к файлу json, значения переменных которого вы хотите поменять местами.

введите описание изображения здесь

Затем вам нужно будет нажать кнопку параметров в среде выпуска. Вы увидите опцию настройки переменных во всплывающем меню.

введите описание изображения здесь

Отсюда вы можете добавить свойство json, которое хотите изменить, как переменную. В моем случае строка подключения. Это будет выглядеть следующим образом:

введите описание изображения здесь

"ConnectionStrings.DefaultConnection"

Затем просто введите значение строки подключения. Затем VSTS заменит вам эти значения при развертывании.

person psycho    schedule 31.07.2017