【问题标题】:Service Fabric Service Fails to Start with TypeLoadExceptionService Fabric 服务无法启动并出现 TypeLoadException
【发布时间】:2016-07-27 09:26:21
【问题描述】:

我们有一个包含多个参与者和服务的 Service Fabric 应用程序。演员和服务在大多数开发机器上成功部署和运行。然而,在一些开发机器上,其中一项服务无缘无故地显示为错误状态。

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

不健康事件:SourceId='System.RA'、Property='ReplicaOpenStatus'、 HealthState='警告',考虑WarningAsError=false。副本有 打开期间多次失败。错误 =System.TypeLoadException (-2146233054) 无法加载类型 来自程序集的“Microsoft.ServiceFabric.Data.ReliableStateManagerImpl” 'Microsoft.ServiceFabric.Data.Impl,版本=5.0.0.0,文化=中性, PublicKeyToken=31bf3856ad364e35' 在 Microsoft.ServiceFabric.Data.ReliableStateManager.get_Impl() 在 Microsoft.ServiceFabric.Data.ReliableStateManager.Microsoft.ServiceFabric.Data.IStateProviderReplica.Initialize(StatefulServiceInitializationParameters 初始化参数)在 Microsoft.ServiceFabric.Services.Runtime.StatefulServiceBase.System.Fabric.IStatefulServiceReplica.Initialize(StatefulServiceInitializationParameters 初始化参数)在 System.Fabric.ServiceFactoryBroker.CreateHelper[TFactory,TReturnValue](IntPtr nativeServiceType, IntPtr nativeServiceName, UInt32 初始化数据长度,IntPtr nativeInitializationData,Guid partitionId, Func3 creationFunc, Action2 初始化Func, ServiceInitializationParametersinitializationParameters)

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

有争议的服务是有状态的,并与无状态的 Actor 共享一个程序集。我不倾向于将两个演员/服务放在一个 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 相同。

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

【问题讨论】:

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


    【解决方案1】:

    很遗憾,我不知道具体细节,但我相信一旦您完全升级(最新的 SDK + 最新的 nuget 包),问题就会消失。

    【讨论】:

    • 这可能是我们的下一步行动。 SF SDK 的每个版本都比上一个版本好。我一直在虚拟机上玩 2.0,非常棒。
    • 确实,新 SDK 中有一些很棒的东西!我想我的建议是,可能不值得深入了解这里发生了什么,如果可能的话就升级。如果我们能得到解释,那就太好了。
    • 很高兴知道。这样,如果它再次发生,我知道如何解决它。了解 Service Fabric 细节的人越多越好。 :-)
    • charisk 是对的,将所有内容更新到最新版本,一切顺利。 5.0 运行时仅与随其发布的 2.0 SDK 兼容。在未来的版本中,您可以期待更好的向后兼容性。
    猜你喜欢
    • 2016-02-04
    • 2017-06-29
    • 1970-01-01
    • 2019-02-21
    • 2017-09-02
    • 2017-08-25
    • 2017-12-13
    • 2016-10-30
    • 2018-09-01
    相关资源
    最近更新 更多