Error: 'Could not load file or assembly 'System.ServiceModel, Version=4.0.0.0' after deploying Function to Azure

Error: 'Could not load file or assembly 'System.ServiceModel, Version=4.0.0.0' after deploying Function to Azure

我使用 Azure v1 函数(C#、.NET Framework 4.6.1)调用外部 WCF 服务,为了完成这项工作,我添加了对 System.ServiceModel 程序集的引用。这在我的本地开发机器上工作正常,但是在将函数部署到 Azure 之后,我收到以下错误:

错误:无法加载一种或多种请求的类型。无法加载文件或程序集 'System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'。系统找不到指定的文件。

我尝试将 dll 作为本地 copy/directly 添加到使用应用服务编辑器的实时二进制文件中,但这导致了另一个错误:

...(同上) 不应为执行加载引用程序集。它们只能在仅反射加载器上下文中加载。

当我删除程序集引用并安装 nuget 包 System.ServiceModel.Primitives 时,出现同样的错误。

您应该检查/尝试的一些事项:

1-FUNCTIONS_EXTENSION_VERSION 默认值为“~2”。确保你有“~1”。更多信息:https://docs.microsoft.com/en-us/azure/azure-functions/functions-app-settings#functions_worker_runtime

1.1-如果上述方法不起作用,您可以考虑将 Azure Function 用于容器中,然后您就可以指定/部署依赖项:https://docs.microsoft.com/en-us/azure/devops/pipelines/targets/function-app-container?view=azure-devops&tabs=yaml

1.2-上面可能比​​较复杂,简化版,你可以保留Azure Function作为触发机制,将所有的业务逻辑移到一个Azure Container Instance中,这样你可以更好地控制依赖关系为您的应用程序。