0

在 ServiceFabric 版本 5.1.163.9590 中使用有状态服务时,我正在尝试部署一个演示应用程序,其中包含三个管理自己状态的 WebApi 服务。

这三个服务中的两个启动并创建了它们的分区而没有错误,但最后一个会引发一系列警告和错误,错误详细信息有这个有趣的消息:

   Microsoft.ServiceFabric.Replicator.LoggingReplicator : GetCopyState The parameter copyContext is null. This might be caused by deployment bug that 'hasPersistedState' attribute is false. 

我找不到对此错误消息的任何外部引用。

有没有办法从应用程序和服务部署端或集群管理端纠正这个问题?

4

1 回答 1

2

该错误表明您有一个具有持久状态的有状态服务,但在部署该服务时没有告诉 Service Fabric。

需要设置一个标志以向 Service Fabric 指示有状态服务具有持久状态(与“易失性”状态相反,意味着仅在内存中)。

在您的 ServiceManifest.xml 中,确保您在服务类型上设置了此标志:

  <ServiceTypes>
      <StatefulServiceType ServiceTypeName="MyServiceType" HasPersistedState="true" />
  </ServiceTypes>

然后,如果您通过 PowerShell 进行部署,请确保在创建服务实例时设置此标志:

PS > New-ServiceFabricService -Stateful -HasPersistedState -ServiceTypeName "MyServiceType" ...
于 2016-08-31T18:26:10.017 回答