Функции Azure 2.0 - EventHubTrigger - System.Private.CoreLib: не удалось загрузить файл или сборку FunctionsProject.dll

Мне удалось запустить приложение-функцию, которое имеет привязку к концентратору событий как из локального, так и из плана потребления West US2. За последние 4 дня, после того как мы переместили все наши зависимые проекты на сборку x64 и обновили все nugets до последней версии, приложение-функция начало давать сбой. Даже не запускается, сам functionsproject.dll не загружается. Та же проблема, даже если я разверну биты в плане потребления.

  • Название проекта функций здесь - EventHubConsumers
  • Версия функции Azure - 2.0
  • Версия инструментов функций Azure - 2.28
  • Конфигурация сборки проекта - x64
  • Чистая версия - NET CORE 2.1
  • Visual Studio 2019 и 2017
Nuget dependencies:

<PackageReference Include="Microsoft.ApplicationInsights" Version="2.10.0" /> <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.0.0" /> <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.EventHubs" Version="3.0.6" /> <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="2.2.0" /> <PackageReference Include="Microsoft.Jarvis" Version="20190426.1.0-rc" /> <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.29" /> <PackageReference Include="Newtonsoft.Json" Version="12.0.2" /> <PackageReference Include="Polly" Version="7.1.0" />

Мне не удалось вытащить FusionLog. Я предполагаю, что у фреймворка функций StartLocator есть настраиваемая логика для загрузки библиотек, которая не заполняет журнал слияния.

Я пробовал отладить LoadFromAssemblyPath(string assemblyPath, bool addProbingPath) в FunctionAssemblyLoadContext.cs, который вызывает это исключение. Я мог видеть этот путь к сборке и убедиться, что мое приложение функций встроено в эту папку. Я даже проверил версию dll и другие детали, открыв в IlSpy. Я не могу понять, почему сборка (функция app dll) не может быть загружена, если она существует на этом пути, как и ожидалось.

  • Зарегистрированные проблемы на Github: Ссылка

  • Пробуем старые версии Microsoft.Azure.Webjobs.Extensions.Eventhubs, т.е. пробуем версию 3.0.5

  • Очистить, удалить obj, bin, а затем запустить
  • Удаление всех старых версий AzureFunctionsTools в LocalAppData, кроме 2.28.
  • Запуск от vs2017
[FunctionName("WriteToStore")]
public async Task Run([EventHubTrigger("activities", Connection = "EventHubConnectionAppSetting", ConsumerGroup = "%ConsumerGroup%")] EventData[] events,
             [EventHub("failed-activities", Connection = "EventHubConnectionAppSetting")]IAsyncCollector<EventData> outputEvents)
{
  //Logic here
}
More details from Functions Console:

Основные инструменты функций Azure (2.7.1505 хэш фиксации: eb8182995562240ca83dd0e0e3394586cf5fdfa3)

Версия среды выполнения функции: 2.0.12590.0

[8/4/2019 22:09:25 PM] Хост здания: запуск подавлен: False, конфигурация подавлена: False

[8/4/2019 22:09:26 PM] Произошла ошибка хоста

[8/4/2019 10:09:26 PM] System.Private.CoreLib: не удалось загрузить файл или сборку Microsoft..EventHubConsumers, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null.

Значение не может быть нулевым.

Имя параметра: поставщик

Нажмите любую, чтобы продолжить .... [8/4/2019 22:09:27 PM] Хост здания: запуск подавлен: False, конфигурация подавлена: False

[8/4/2019 22:09:27 PM] Произошла ошибка хоста

[8/4/2019 10:09:27 PM] System.Private.CoreLib: не удалось загрузить файл или сборку Microsoft..EventHubConsumers, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null.

Хостинговая среда: Производство

Путь к корневому каталогу содержимого: D: some \ EventHubConsumers \ bin \ x64 \ Debug \ netcoreapp2.1

Сейчас слушаем: http://0.0.0.0:7071

Приложение запущено. Нажмите Ctrl + C, чтобы выключить.

[8/4/2019 22:09:29] Хост здания: запуск подавлен: ложь, конфигурация подавлена: ложь

[8/4/2019 22:09:29] Произошла ошибка хоста

[8/4/2019 10:09:29 PM] System.Private.CoreLib: не удалось загрузить файл или сборку Microsoft.some.EventHubConsumers, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null.


person seesharpconcepts    schedule 04.08.2019    source источник


Ответы (1)


Я получил эту работу после исправления нескольких проблем. Я отмечу проблемы и исправления, за которыми следил.

Повторюсь, мое приложение-функция настроено для сборки с x64 и запускается на .Netcore 2.1.

  1. Один из зависимых проектов (сборка) был построен с использованием netstandard 2.0, а все остальные были построены как Netcore 2.1. Это вызвало проблему загрузки сборки с x64 (хотя эта зависимая сборка была построена с конфигурацией x64). Это звучит немного странно, и я не уверен, является ли это исправлением или даже проблемой.

  2. Visual Studio, вероятно, запускает основные инструменты x86, и, следовательно, приложение функции x64 не работает с загрузкой сборки и т. Д. При запуске из Visual Studio (2017 и 19). Вы можете настроить проект для запуска внешнего приложения во время отладки. Вы можете установить Properties-> Debug для запуска 'func.exe host start'.

  3. Я получал исключение «Значение не может быть нулевым. Аргумент - Путь» после запуска приложения-функции из Visual Studio.

    Fix -Explained (здесь - Github). Путь npm отсутствует в PATH. Я обновил корневой путь npm в переменной среды PATH.

  4. Мне пришлось обновить основные инструменты функции Azure и запустить приложение-функцию, используя команду «запуск хоста func». Теперь я запускаю приложение, используя «запуск хоста func», и подключаю отладчик к func.exe (CTRL + ALT + P). Вы можете найти папку AzureFunctionTools в своей локальной папке appdata - %LocalAPPDATA%\AzureFunctionsTools. Вы можете увидеть все версии инструментов ядра функции azure в папке релизов вместе с примером cli и func.exe - AzureFunctionsTools\Releases\2.28.0\cli

  5. Основная проблема с развертыванием была связана с настройками приложения. Мне пришлось изменить платформу приложения на 64-разрядную на портале Azure. По умолчанию приложение-функция было создано с настройкой 32-битной платформы. Объясняется здесь - Github.

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

Приложение-функция не предоставляет журнал слияния с проблемами загрузки сборки, что затрудняет понимание того, что происходит не так!

person seesharpconcepts    schedule 07.08.2019