Ядро ASP.NET в службе приложений Azure не читает строку подключения из параметров приложения - PullRequest
0 голосов
/ 10 марта 2019

Как заставить службу приложений читать строку подключения из настроек, а не из файла appsettings.json?

Мы пробовали Настройки / Настройки приложения / Строки подключения и Настройки / Конфигурация (предварительный просмотр) / Строки соединения, но он продолжает читать из загруженного файла appsettings.json.

Мы использовали DevOps Azure и пробовали публикацию в один клик через Интернет. Вероятно, это было бы при работе с публикацией вручную и заменой строки соединения непосредственно из настроек публикации (в VS).

Мы использовали этот подход для других (неосновных) веб-сайтов, и он работает как следует.

Я проверил учебники для Asp.Net Core и Azure Hosting, и, полагаю, я все сделал правильно?

Где я могу начать отлаживать эту штуку?

EntityFramework находится в отдельном проекте, мы используем внедрение зависимостей с помощью специального конструктора для строки подключения, и это прекрасно работает, если я вручную настраиваю файл appsettings.json, но мне нужно развернуть его на нескольких серверах, и это не имело бы большого смысла для этого материала из кода или вручную каждый раз. И я не хотел бы исключать автоматическое развертывание appsettings.json, я просто хочу преобразовать его на сервере.

ConfigureServices

IConfigurationRoot configuration = new ConfigurationBuilder().SetBasePath(AppDomain.CurrentDomain.BaseDirectory).AddJsonFile("appsettings.json", optional: false, reloadOnChange: true).Build();
            string connectionString = configuration.GetConnectionString("DefaultConnection");

appsettings.json

{
  "ConnectionStrings": {
    "DefaultConnection": "xxx"
  },
...

Возможно, я неправильно прочитал appsetting.json, и Azure не может правильно внедрить новую строку подключения?

1 Ответ

1 голос
/ 10 марта 2019

Основываясь на обсуждении в комментариях, было решено использовать объект IConfiguration, предоставленный через конструктор класса Startup (это работает только в Core 2.x +).

Так, например:

private readonly IConfiguration _config;

public Startup(IConfiguration config)
{
    _config = config;
}

Затем вы можете использовать _config для доступа к настройкам в пределах Startup.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...