错误:将 Function 部署到 Azure 后,无法加载文件或程序集“System.ServiceModel,版本 = 4.0.0.0”
Posted
技术标签:
【中文标题】错误:将 Function 部署到 Azure 后,无法加载文件或程序集“System.ServiceModel,版本 = 4.0.0.0”【英文标题】:Error: 'Could not load file or assembly 'System.ServiceModel, Version=4.0.0.0' after deploying Function to Azure 【发布时间】:2020-04-28 08:13:20 【问题描述】:我使用 Azure v1 函数(C#、.NET Framework 4.6.1)来调用外部 WCF 服务,并且为了使其工作,我添加了对 System.ServiceModel 程序集的引用。这在我的本地开发机器上运行良好,但在将功能部署到 Azure 后,我收到以下错误:
错误:无法加载一种或多种请求的类型。无法加载文件或程序集“System.ServiceModel,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”。系统找不到指定的文件。
我尝试使用应用服务编辑器将 dll 作为本地副本/直接添加到实时二进制文件中,但这导致了另一个错误:
...(如上) 不应加载引用程序集以供执行。它们只能在仅反射加载器上下文中加载。
当我删除程序集引用并改为安装 nuget 包 System.ServiceModel.Primitives 时,会发生同样的错误。
【问题讨论】:
【参考方案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,在那里你可以更好地控制你的依赖关系应用程序。
【讨论】:
以上是关于错误:将 Function 部署到 Azure 后,无法加载文件或程序集“System.ServiceModel,版本 = 4.0.0.0”的主要内容,如果未能解决你的问题,请参考以下文章
Azure 应用服务Python fastapi Function在Azure
HTTP 错误 500.32 - 将自包含 .Net Core 3.1 应用程序部署到 Azure 后,ANCM 无法加载 dll
Azure 部署后 ASP.NET Core MVC webapp 错误
Azure YAML 部署失败并显示“错误:无法将 Web 包部署到应用服务。冲突(代码:409)”
使用 Capistrano 将 Ruby on Rails 应用程序部署到 Windows Azure VM 时出现超时错误