我遇到类似这个问题的问题: 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命名空间?
答案 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