C# 跨WCF服务共享对象

C# 跨WCF服务共享对象,c#,.net,vb.net,wcf,C#,.net,Vb.net,Wcf,我有一个类似于这个问题的问题: 我的主要区别在于我不能控制电线的两端。我的设置与此类似: 我的.对象 My.Login服务 我的服务1 我的服务2 您要做的第一件事是通过登录服务登录并收到安全票据。票证对象位于My.Objects命名空间中。对于My.Service1和My.Service2中的每个后续呼叫,您必须传入安全票证以验证呼叫。我遇到的问题是,客户端(现在是.net客户端,将来是Java和其他客户端)看到的不是My.Objects.Ticket,而是将引用解析为My.LoginSer

我有一个类似于这个问题的问题:

我的主要区别在于我不能控制电线的两端。我的设置与此类似:

我的.对象 My.Login服务 我的服务1 我的服务2

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

如何使每个服务将对象解析到My.objects命名空间?

看看,可能就是您要查找的。它不同于DataContractSerializer,因为它在序列化的XML中包含CLR类型信息,这允许您共享您的类型,但强制两端使用相同的类型

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


创建引用具有票证类型的服务之一的程序集,然后从主项目引用此程序集。

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

您可以在此处找到详细的场景和示例项目:


我刚刚用不同的端点将所有内容添加到同一个服务中,这解决了我的问题。调查你的解决方案,它似乎会起作用,但你需要控制两端,我没有。