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

28
我在Visual Studio 2017(版本15.7.1)中创建了一个新的Service Fabric应用程序,并使用.Net Core 2.0有状态服务模板添加了一个新服务。当我尝试运行该服务时,它无法正确启动,我可以在诊断事件中看到以下异常: “Replica had multiple failures during open on _Node_0. API call: IStatefulServiceReplica.ChangeRole(P); 错误=System.IO.FileNotFoundException (-2147024894) 无法加载文件或程序集'System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'。系统找不到指定的文件。”
3个回答

70

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

PM> Install-Package System.ServiceModel.Primitives

4
在Windows 11更新后可能会有用的答案。
在我的情况下,在Windows 11更新后,有一个错误导致程序无法运行。我收到了"Could not load file or assembly System.ServiceModel, version 3.0.0.0"的错误信息。
经过长时间的研究,我卸载了.net框架并重新安装了它,然后程序就可以正常工作了。
为此,我使用了"程序/卸载程序/添加删除Windows功能"。
取消所有.net框架的勾选,并单击"确定"按钮。在卸载过程结束后,再次勾选相同的框架,并单击"确定"按钮。
完美!

面对许多客户系统都遇到了同样的问题。 - vinmen
重新安装 .NET Framework 解决了这个问题。 - Greatchap

2
System.ServiceModel.Primitives存在一个比较奇怪的bug。如果你使用依赖于System.ServiceModel.Primatives的DLL,则必须在使用该DLL的项目中将其安装为引用。如果没有安装,DLL将不知道在哪里找到它,你会收到可怕的“无法加载文件或程序集...”错误提示。 正如Ragtimewilly所指出的那样,你可以通过Nuget轻松添加引用。 也许有更好的方法来解决这个问题 - 但是通过Nuget添加引用就可以解决问题了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接