启动有状态服务时无法加载文件或程序集“System.ServiceModel,Version=4.0.0.0”异常

问题描述 投票:0回答:5

我在 Visual Studio 2017(版本 15.7.1)中创建了一个新的 Service Fabric 应用程序,并使用 .Net Core 2.0 Stateful Service 模板添加了一个新服务。

当我尝试运行该服务时,它无法正确启动,我可以在诊断事件中看到以下异常:

Description='副本在 _Node_0 上打开期间发生多次故障。 API调用:IStatefulServiceReplica.ChangeRole(P);

错误= System.IO.FileNotFoundException(-2147024894) 无法加载文件或程序集“System.ServiceModel,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”。 系统找不到指定的文件。

c# .net-core azure-service-fabric
5个回答
70
投票

我通过安装 Nuget 包修复了这个问题 System.ServiceModel.Primitives:

PM> Install-Package System.ServiceModel.Primitives

4
投票

Windows 11 更新后可能有用的答案。

就我而言,更新 Windows 11 后,应用程序由于此错误而无法运行。我遇到错误无法加载文件或程序集 System.ServiceModel,版本 3.0.0.0。

经过长时间的研究,我卸载了.net框架并重新安装它,它工作了。

为此,我使用了程序/卸载程序/添加删除 Windows 功能。

取消选中所有 .net Framework 案例,然后单击“确定”按钮。 卸载过程后,我检查了相同的案例,然后单击“确定”按钮。

宾果游戏!


2
投票

System.ServiceModel.Primitives 有一个我认为相当奇怪的错误。如果您使用的 DLL 具有 System.ServiceModel.Primatives 依赖项,那么您还必须将其安装为使用该 DLL 的项目中的引用。如果你不这样做,DLL 将不知道在哪里找到它,并且你会得到可怕的“无法加载文件或程序集...” 正如 Ragtimewilly 所指出的,您可以通过 Nuget 轻松添加引用。 可能有更好的方法来做到这一点 - 但通过 Nuget 添加它就可以了。


0
投票

我必须安装 4.4.4 版本的 System.ServiceModel.Primitives。最新版本没有解决我的问题

安装包 System.ServiceModel.Primitives -版本 4.4.4


0
投票

在同一解决方案中使用 .NET 8 和 .NET Framework 4.8 项目时,我遇到了相同的错误,并且这两个项目都引用了 .NET Framework 4.8 共享项目。

我必须将引用

System.ServiceModel.Primitives
的 .NET 8 NuGet 包从使用 v8 版本降级为使用最新的 v4 版本,以便所有项目最终都以相同版本的
System.ServiceModel.Primitives
为目标。

例如我必须在 .NET 8 项目中将

System.ServiceModel.Http
System.ServiceModel.NetTcp
NuGet 包从 v8.0.0 降级到 v4.10.3。 .NET Framework 4.8 项目已引用 NuGet 包的 v4.10.3。

© www.soinside.com 2019 - 2024. All rights reserved.