【问题标题】:Change namespace of WCF project without affecting clients在不影响客户端的情况下更改 WCF 项目的命名空间
【发布时间】:2016-02-05 00:52:24
【问题描述】:

我们已经创建并部署了一个 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 

这似乎导致调用的结果(不会出错)没有反序列化,因此 List 最终为空。

【问题讨论】:

    标签: c# wcf namespaces


    【解决方案1】:

    只要您在服务内部进行所有重构,就不会有任何问题,前提是:

    • 您只能与第三方共享 WSDL
    • 换一种说法:您没有向第三方提供包含接口和[DataContract] 类的共享库

    问候

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-08
      • 1970-01-01
      • 2014-08-23
      相关资源
      最近更新 更多