Ошибка: «Не удалось загрузить файл или сборку» System.ServiceModel, версия = 4.0.0.0 »после развертывания функции на Azure - PullRequest
0 голосов
/ 10 января 2020

Я использую функцию Azure v1 (C#,. NET Framework 4.6.1) для вызова внешней службы WCF, а для выполнения этой работы я добавил ссылку на сборку System.ServiceModel. Это хорошо работает на моей локальной машине разработчика, но после развертывания функции на Azure я получаю следующую ошибку:

Ошибка: невозможно загрузить один или несколько запрошенных типов. Не удалось загрузить файл или сборку 'System.ServiceModel, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089'. Системе не удается найти указанный файл.

Я попытался добавить dll в качестве локальной копии / непосредственно в исполняемый двоичный файл с помощью редактора службы приложений, но это вызвало еще одну ошибку:

.. . (как указано выше) Эталонные сборки не должны загружаться для выполнения. Они могут быть загружены только в контексте загрузчика Reflection-only.

Та же ошибка возникает, когда я удаляю ссылку на сборку и вместо этого устанавливаю пакет nuget System.ServiceModel.Primitives.

1 Ответ

1 голос
/ 10 января 2020

Несколько вещей, которые вы должны проверить / попробовать:

1-FUNCTIONS_EXTENSION_VERSION имеет значение "~ 2" по умолчанию. Убедитесь, что у вас есть «~ 1». Дополнительная информация: https://docs.microsoft.com/en-us/azure/azure-functions/functions-app-settings#functions_worker_runtime

1.1-Если вышеупомянутое не сработало, вы можете рассмотреть возможность работы с Azure функцией в контейнере, тогда вы сможете указать / развернуть зависимости: https://docs.microsoft.com/en-us/azure/devops/pipelines/targets/function-app-container?view=azure-devops&tabs=yaml

1.2-Вышеприведенное может быть сложным, поэтому в упрощенном варианте вы можете сохранить функцию Azure в качестве механизма запуска и перенести весь бизнес logi c в Azure Экземпляр контейнера, где у вас есть больший контроль над зависимостями для вашего приложения.

...