我有StatefulService
方法。该方法的第一个参数接受与我的一个Actors对应的接口类型。 Actor使用ServiceProxy
调用服务方法,将this
作为第一个参数传递。这个编译文件。签名匹配。
然而,当运行时,我收到有关DataContractSerializer
未知的意外类型的IMyActorType的错误。我知道这个消息意味着什么。 ServiceProxy
无法处理ActorReferences
吗?我知道ActorProxy
有效。我可以使用ActorProxy
将一个Actor传递给另一个Actor。
或者这可能是我StatefulService
配置中的一些问题?我的ServiceReplicaListener
设置了什么?
我现在通过将StatefulService
方法的方法签名更改为ActorReference
来解决此问题。序列化很好,我可以在另一边打开它。不过,我更愿意打字。
答案 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。