0

我使用 Azure v1 函数(C#、.NET Framework 4.6.1)来调用外部 WCF 服务,并且为了使其工作,我添加了对 System.ServiceModel 程序集的引用。这在我的本地开发机器上运行良好,但在将功能部署到 Azure 后,我收到以下错误:

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

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

...(如上) 不应加载引用程序集以执行。它们只能在 Reflection-only loader 上下文中加载。

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

4

1 回答 1

1

您应该检查/尝试的几件事:

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,在那里你可以更好地控制你的应用程序的依赖关系。

于 2020-01-10T17:09:58.243 回答