Использование ConfigurationManager для доступа к App.config в веб-задании Azure v3.5

Проблема: ConfigurationManager не работает для доступа к App.config в веб-задании Azure v3.5

Вопрос: Как заставить работать?

* Фон *

Я унаследовал очень старое веб-приложение, которое должно работать как веб-приложение Windows Azure в пуле приложений .Net 3.5.

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

Моя проблема в том, что веб-задание должно быть приложением .Net v3.5 для запуска в соответствующем веб-приложении (они оба используют один и тот же пул приложений, поэтому веб-задание v4.5 не может быть развернуто в веб-приложении v3.5) .

Это означает, что я не могу использовать обычные пакеты NuGet WebJob, такие как Windows Azure Configuration Manager, который, как я понимаю, позволяет классу System.Configuration.ConfigurationManager получать доступ к App.config обычным способом, позволяя ссылочным библиотекам, содержащим EntityFramework ObjectContexts на основе EDMX, загружать свои строки подключения. и настройки приложения для доступа к различным фрагментам кода повсюду. Код используется совместно веб-приложением и веб-заданием, поэтому мне нужен метод настройки, согласованный для обоих.

Запуск WebJob как v4.5 позволяет ему нормально работать с ConfigurationManager, но как только я переключаюсь на v3.5 (что мне нужно сделать, чтобы веб-приложение работало), я должен удалить все несовместимые пакеты Nuget WebJob, включая Windows Диспетчер конфигурации Azure. ConfigurationManager больше не будет работать для загрузки AppSettings, без ошибок, он просто ничего не возвращает для AppSettings.

У меня вопрос: как заставить ConfigurationManager загружать развернутый файл App.config без использования этих несовместимых пакетов NuGet. Я просмотрел код в Microsoft.WindowsAzure.Configuration.dll, но не вижу, как он заставляет ConfigurationManager работать на самом деле, я, должно быть, ищу не в том месте.


person cuzzlor    schedule 24.03.2016    source источник


Ответы (1)


После запуска нескольких тестов пула приложений v4.6 и v3.5 (точно такая же кодовая база - никакие пакеты NuGet не установлены, кроме публикации Azure WebJobs), я обнаружил, что веб-задания, выполняемые в пулах приложений v3.5, просто не загружают свои файлы конфигурации. .

Кстати, RSACryptoServiceProvider.ImportParameters также взрывается в версии 3.5.

Следующие действия помогут принудительно загрузить файл конфигурации.

class Program
{
    static void Main()
    {
        AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", @"D:\home\site\wwwroot\App_Data\jobs\triggered\DataImportWebJob\[TheAppName].exe.config");

Благодаря Использование ConfigurationManager для загрузки конфигурации из произвольного места

person cuzzlor    schedule 24.03.2016