【发布时间】:2020-07-21 12:38:05
【问题描述】:
在使用 WCF 服务对我们用 C# 编写的客户端/服务系统进行重大重构之后,我们已将所有服务接口契约移至新的命名空间,即从如下所示:
namespace Old.Framework.Name
{
[DataContract]
public class ServiceEntriesResult
{
[DataMember]
public string SomeData { get; set; }
}
[ServiceContract]
public interface IMyService
{
[OperationContract]
ServiceResult GetServiceData();
}
}
到这里:
namespace New.Framework.Name
{
[DataContract]
public class ServiceEntriesResult
{
[DataMember]
public string SomeData { get; set; }
}
[ServiceContract]
public interface IMyService
{
[OperationContract]
ServiceResult GetServiceData();
}
}
唯一的区别是命名空间,但它影响所有参数和返回数据结构以及服务接口。
现在,我们非常希望新客户端与旧服务兼容。目前,如果我尝试使用我的新客户端从旧服务中读取,我会得到一个空结果。我可以看到在服务器端触发了正确的服务调用,因此它显然设法映射了正确的东西,但返回的数据对象为空。
关于如何解决这个问题的任何想法?这有可能吗?
【问题讨论】:
-
是的,这实际上有很大帮助!我只需要使用魔法名称空间 URL 更新我的所有合同。我看起来并不那么漂亮,但它确实似乎有效!非常感谢:-)