Service Fabric服务无法以TypeLoadException

时间:2016-04-06 19:07:01

标签: c# .net azure-service-fabric

我们有一个Service Fabric应用程序,包含多个actor和服务。演员&服务在大多数开发机器上成功部署和运行。但是,在一些开发机器上,其中一个服务没有明显的原因显示错误状态。

在Service Fabric Explorer中,错误图标显示在群集上一直到分区。但是,该节点未显示它处于错误状态。等待几分钟后,节点确实显示了一个警告图标,并显示以下错误消息:

  

不健康事件:SourceId ='System.RA',Property ='ReplicaOpenStatus',   HealthState ='Warning',ConsideWarningAsError = false。复制品了   打开期间多次失败。 Error = System.TypeLoadException   (-2146233054)无法加载类型   程序集中的“Microsoft.ServiceFabric.Data.ReliableStateManagerImpl”   'Microsoft.ServiceFabric.Data.Impl,Version = 5.0.0.0,Culture = neutral,   PublicKeyToken = 31bf3856ad364e35'at   Microsoft.ServiceFabric.Data.ReliableStateManager.get_Impl()at   Microsoft.ServiceFabric.Data.ReliableStateManager.Microsoft.ServiceFabric.Data.IStateProviderReplica.Initialize(StatefulServiceInitializationParameters   initializationParameters)   Microsoft.ServiceFabric.Services.Runtime.StatefulServiceBase.System.Fabric.IStatefulServiceReplica.Initialize(StatefulServiceInitializationParameters   initializationParameters)   System.Fabric.ServiceFactoryBroker.CreateHelper [TFactory,TReturnValue](IntPtr的   nativeServiceType,IntPtr nativeServiceName,UInt32   initializationDataLength,IntPtr nativeInitializationData,Guid   partitionId,Func 3 creationFunc, Action 2 initializationFunc,   ServiceInitializationParameters initializationParameters)

我设置了断点,发现每个预期的program.cs行都会执行,最终会进入Thread.Sleep(Timeout.Infinite)。但是没有一行失败的服务代码被击中。

有争议的服务是有状态的,并与无状态的演员共享一个程序集。我不倾向于在一个dll中放置两个演员/服务,但是一个同事做了,它适用于大多数团队。不知道这是否是一个潜在的问题。

当两台开发机器上发生这种情况时,团队中的每个人都在运行SDK 1.5。我升级到SDK 2.0(但没有更改Nuget中的程序集引用以使用2.0程序集)。同样的问题。

我搜索了程序集“Microsoft.ServiceFabric.Data.Impl”,并在[Program Files] \ Microsoft Service Fabric \ bin \ Fabric \ Fabric.Code下找到它。它是版本5.0.135.9590。

我的同事,有它工作,与版本4.5.175.9590具有相同的文件。

非常感谢任何帮助或建议。

1 个答案:

答案 0 :(得分:1)

不幸的是我不知道具体细节,但我相信一旦你完全升级(最新的SDK +最新的nuget软件包),问题就会消失。