在不影响客户端的情况下更改WCF项目的命名空间
本文关键字:WCF 项目 命名空间 情况下 影响 客户端 | 更新日期: 2023-09-27 18:20:40
我们创建并部署了一个WCF服务,该服务正被各种第三方使用。
然而,我们现在想要更改该特定项目中类的名称空间。有没有办法在第三方不必做出任何改变的情况下做到这一点?
示例:
namespace Test.Service
{
[ServiceContract]
public interface MyService
{
[OperationContract]
List<People> GetPeople();
}
public class MyService : IMyService
{
public List<People> GetPeople()
{
// Logic here
}
}
}
namespace Test.Service.DTO
{
[DataContract]
public class Person { }
}
至
namespace Something.Different
{
[ServiceContract]
public interface MyService
{
[OperationContract]
List<People> GetPeople();
}
public class MyService : IMyService
{
public List<People> GetPeople()
{
// Logic here
}
}
}
namespace Something.Different.DTO
{
[DataContract]
public class Person { }
}
实际上,这似乎是一个主要与WDSL中生成的DTO的名称空间有关的问题。
他们正在改为
http://schemas.datacontract.org/2004/07/Something.Different.DTO
来自
http://schemas.datacontract.org/2004/07/Test.Service.DTO
这似乎导致调用的结果(不会出错)没有反序列化,因此列表最终为空。
只要在服务内部进行所有重构,就不会有任何问题,前提是:
- 您只与第三方共享WSDL
- 换句话说:您没有向第三方提供包含接口和
[DataContract]
类的共享库
问候