Настройки приложения не соблюдаются Core WebJob - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть Core WebJob, развернутый в веб-приложении Azure.Я использую WebJobs версии 3.0.6 .

Я заметил, что изменения в строках подключения и настройках приложения (добавленные через веб-интерфейс Azure) не сразу принимаютсяКод WebJob.

Это похоже на то, что те же строки подключения и настройки приложения не отображаются на странице env KUDU приложения сразу (хотя я признаю, что это может быть красная сельдь и какая-то вещь для кэширования KUDU, которую яне в курсе).

В прошлом я развернул несколько неосновных WebJobs и не сталкивался с этой проблемой, так что удивляетесь, связана ли она с Core?Хотя я не могу понять, как это может повлиять на конфиги, показывающие KUDU.

У меня была эта проблема на днях (когда конфиги не были обнаружены WebJob или показаны в KUDU) и получалникуда, так что оставил это.Когда я вернулся на следующий день, конфиги теперь правильно отображались в KUDU и перехватывались WebJob.Поэтому я хотел бы знать, что произошло за это время, что означает, что конфиги теперь выбираются, как и ожидалось.

Я попытался перезапустить WebJob и перезапустить приложение после внесения изменений в конфигурацию.но ни один, похоже, не дает эффекта.

Стоит также отметить, что я не загружаю appSettings.json во время настройки программы.Тем не менее, загружаемая строка подключения была последовательно строкой подключения из этого файла, т.е. моего локального компьютера SQL Server / DB.Я всегда понимал, что что-либо в веб-интерфейсе Azure переопределяет любые эквивалентные настройки из файлов конфигурации. В этом сообщении от Дэвида Эббо указано, что при вызове AddEnvironmentVariables() во время установки будут наблюдаться конфигурации Azure , но здесь это не так .Изменилось ли это, или он загружает конфиги из этого файла по соглашению, потому что он не может видеть содержимое из Azure?

Вот мой код программы WebJob:

    public static void Main(string[] args)
    {
      var host = new HostBuilder()
      .ConfigureHostConfiguration(config =>
      {
        config.AddEnvironmentVariables();
      })
      .ConfigureWebJobs(webJobConfiguration =>
        {
          webJobConfiguration.AddTimers();
          webJobConfiguration.AddAzureStorageCoreServices();
        }
      )
      .ConfigureServices((context, services) =>
      {
        var connectionString = context.Configuration.GetConnectionString("MyConnectionStringKey");

        services.AddDbContext<DatabaseContext>(options =>
          options
            .UseLazyLoadingProxies()
            .UseSqlServer(connectionString)
        );

        // Add other services
      })
      .Build();

      using(host)
      {
        host.Run();
      }
    }

Итак, мои вопросы:

  • Как быстро должны быть добавлены / обновлены конфигурации через веб-интерфейс Azure в KUDU?
  • Не относится ли тот факт, что они не отображаются в KUDU, относительно моего основного WebJob?видите обновленные конфиги?
  • Загружается ли appSettings.json, даже если я не звоню .AddJsonFile("appSettings.json")?
  • Что я могу сделать, чтобы новые конфиги, добавленные через Azure, были доступны длямой WebJob немедленно?

1 Ответ

0 голосов
/ 24 апреля 2019

Порядок, в котором указываются источники конфигурации, важен, поскольку он устанавливает приоритет, с которым параметры будут применяться, если они существуют в нескольких местах.В приведенном ниже примере, если один и тот же параметр существует как в appsettings.json, так и в переменной среды, то будет использоваться параметр из переменной среды.Последний указанный источник конфигурации «выигрывает», если параметр существует в нескольких местах.Команда ASP.NET рекомендует указывать переменные среды в последнюю очередь, чтобы среда, в которой работает ваше приложение, могла переопределять все, что задано в развернутых файлах конфигурации.

Для получения дополнительных сведений о Azure можно обратиться к здесь .Параметры приложения служб приложений и строки подключения в ASP.NET Core

...