ServiceFabric StatefulService方法传递了Actor Proxy DataContract错误

时间:2015-11-30 17:50:21

标签: azure-service-fabric

我有StatefulService方法。该方法的第一个参数接受与我的一个Actors对应的接口类型。 Actor使用ServiceProxy调用服务方法,将this作为第一个参数传递。这个编译文件。签名匹配。

然而,当运行时,我收到有关DataContractSerializer未知的意外类型的IMyActorType的错误。我知道这个消息意味着什么。 ServiceProxy无法处理ActorReferences吗?我知道ActorProxy有效。我可以使用ActorProxy将一个Actor传递给另一个Actor。

或者这可能是我StatefulService配置中的一些问题?我的ServiceReplicaListener设置了什么?

我现在通过将StatefulService方法的方法签名更改为ActorReference来解决此问题。序列化很好,我可以在另一边打开它。不过,我更愿意打字。

2 个答案:

答案 0 :(得分:2)

Service Proxy不像Actor Proxy那样处理Actor引用。服务堆栈独立于actor,并且不了解actor参考。您可以传递actor引用(https://msdn.microsoft.com/en-us/library/azure/microsoft.servicefabric.actors.actorreference.get.aspx),然后将actor引用绑定(https://msdn.microsoft.com/en-us/library/azure/microsoft.servicefabric.actors.actorreference.bind.aspx)到接收端的actor接口类型,而不是传递actor接口。您可以将绑定方法的输出强制转换为actor接口。

答案 1 :(得分:0)

您需要传递一个简单的DataContract修饰的POCO而不是接口。 DataContractSerializer不能在界面上工作。适用于WCF的相同规则也适用于Service Fabric。