跨WCF服务共享对象

时间:2010-08-16 17:43:03

标签: c# .net vb.net wcf

我遇到类似这个问题的问题: Problem with WCF and Multiple Namespaces

我遇到的主要区别是我无法控制电线的两端。我的设置类似于:

My.Objects My.LoginService My.Service1 My.Service2

您要做的第一件事是通过登录服务登录并获得安全票证。故障单对象位于My.Objects命名空间中。对于My.Service1和My.Service2中的每个后续调用,您必须传入安全票证以验证调用。我遇到的问题是,不是客户端(现在是.net,而是将来是Java),而是看到一个My.Objects.Ticket,而引用正在解析为My.LoginService.Ticket,My.Service1.Ticket,和My.Service2.Ticket。当客户端尝试将登录期间检索到的对象传递给任何其他函数时,它会收到对象不匹配错误。

如何让每个服务将对象解析为My.Objects命名空间?

3 个答案:

答案 0 :(得分:0)

看一下NetDataContractSerializer,可能就是你要找的东西。它与DataContractSerializer的不同之处在于,它在序列化XML中包含CLR类型信息,允许您共享类型,但强制线的两端使用相同的类型。

看一下我放在一起的博客文章和一个属性(来自我偶然发现的另一个博客),将其注入需要使用它的操作:

http://theburningmonk.com/2010/08/wcf-using-the-netdatacontractserializer-to-share-your-type/

答案 1 :(得分:0)

使用故障单类型创建引用其中一个服务的程序集,然后从主项目中引用此程序集。

答案 2 :(得分:0)

有一种简单的方法可以在客户端和服务之间共享类型,只需在添加服务引用之前向客户端添加对共享类型程序集的引用。

您可以在那里找到详细的方案和示例项目:

http://blog.walteralmeida.com/2010/08/wcf-tips-and-tricks-share-types-between-server-and-client.html