Не удается разрешить конфигурацию в настройках приложения Azure при запуске WebJob - PullRequest
0 голосов
/ 23 января 2019

Когда WebJob запускается (Program.Main ()), элемент конфигурации в настройках приложения Azure НЕ переопределяет значение, установленное в app.config.

Оба ConfigurationManager.AppSettings и CloudConfigurationManager.GetSetting возвращают одно и то же значение изapp.config вместо переопределения в настройках приложения Azure

Хотя после регистрации функции WebJob настройки в Azure становятся доступными в обычном режиме при запуске

Среда: VS2017 v15.8.5,
Целевая платформа .NET Framework 4.6,
Microsoft.Azure.WebJobs v2.3.0,
Microsoft.Azure.WebJobs.Core v2.3.0,
Microsoft.Azure.WebJobs.Extensions v2.2.0,
Microsoft.Web.WebJobs.Publish v2.0.0
Microsoft.Azure.ConfigurationManager v4.0.0

1.App.config:

<appSettings>

    <add key="EXECUTION_ENVIRONMENT" value="PleaseSpecify" />

</appSettings>

2.Azure Настройки приложения:

ЗНАЧЕНИЕ НАСТРОЙКИ ПРИЛОЖЕНИЯ

EXECUTION_ENVIRONMENT UAT

3.Программа.cs:

class Program {

static void Main(string[] args)

{

// return "PleaseSpecify" instead of "UAT" in Azure

var ee1 = ConfigurationManager.AppSettings["EXECUTION_ENVIRONMENT"];

Console.WriteLine(ee1);

// return "PleaseSpecify" instead of "UAT" in Azure

var ee2 = Microsoft.Azure.CloudConfigurationManager.GetSetting("EXECUTION_ENVIRONMENT");

Console.WriteLine(ee2);

}

}

4. Опубликовать в Azure через Visual Studio ...

5.Проверить журналы WebJob, чтобы увидеть проблему, как указано в приведенном выше источнике

Я надеюсь, что настройки в Azure имеют приоритет над настройками в App.config, но это не так!

Любые мысли очень ценятся!

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Спасибо Джорджу за замечательные очки!

Оказывается, для Webjob внедрение конфигурации происходит во время времени развертывания , когда параметры приложения Azure фактически записываются в App.config.

В то время как для обычного веб-приложения (API) все происходит иначе, когда App.config остается нетронутым, но параметры приложения Azure внедряются в ConfigurationManager.AppSettings при времени выполнения .

Чтобы полностью решить эту проблему во всех приложениях Web (API) и WebJob, я создаю сценарий Visual Studio After-Build для объединения изменений из CommonSettings.config в Web.config / App.config и оставления остальных как есть.Поэтому в нашем приложении мы просто используем ConfigurationManager для надежного разрешения настроек: параметр Azure> Web / App.config> CommonSetting.config

0 голосов
/ 25 января 2019

Я вижу вашу проблему в чем дело. Как известно, приоритет настроек приложения выше, чем у файла app.config. На самом деле речь идет не о приоритете, но настройки приложения перепишут файл конфигурации. Поэтому каждый раз, когда вы изменяете настройки приложения, веб-сайт или веб-работа перезапускаются.

Однако, если вы измените внешний файл, например, CommonSettings.config, это не приведет к перезагрузке. Потому что вы можете найти, что конфигурация не изменится, пока ваш веб работает. Значение будет получено из общего файла.

Вот мой вывод: когда вы запускаете веб, настройки приложения будут вводить настройки, тогда эти настройки будут похожи на обычные настройки, и вы добавляете файл общих настроек, в это время сеть будет получать настройки из CommonSettings. .config. Вы можете найти приоритет между app.config и внешним файлом здесь .

Если у вас остались другие вопросы, пожалуйста, дайте мне знать.

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