从WSDL中删除额外的WCF命名空间

时间:2015-08-26 15:33:00

标签: c# wcf wsdl

我在使用WCF中的命名空间时遇到问题。我以前从未这样做过。我已经尝试了很多在谷歌上找到解决方案。但我仍然无法找到解决方案。

我编写了一个WCF服务,该服务分为3个项目,另外我创建了一个模型项目:

  1. 合同(ServiceContract)
  2. 服务(代码隐藏)
  3. 主机(ServiceHost)
  4. 模型(DataContract类)
  5. 当我在IIS中托管服务时,它正在生成WSDL,但有一些命名空间,我没有定义如下:

    http://schemas.microsoft.com/2003/10/Serialization/
    http://schemas.datacontract.org/2004/07/My.Models
    

    问题是我只想通过相同的命名空间访问我的所有服务合同和数据合同。

    因为在代理类中生成DataContract类时,它正在被复制。这意味着如果我的ClassA项目中有一个班级Models,那么它会给我2个班级ClassAClassA1

    我在代理类中看到它们存在于不同的命名空间中。所以,我想避免这种情况。

    我还想避免使用ChannelFactory方法,因为有很多OperationContract个函数。所以,不想用手编写那么多代码,但希望以正确的方式自动生成。

    非常感谢任何帮助。提前谢谢。

1 个答案:

答案 0 :(得分:0)

  

我也想避免使用ChannelFactory方法,因为有很多   OperationContract功能。所以,不要想那么多的代码   手,但希望它以正确的方式自动生成。

这完全没有意义。 ChannelFactory<T>.CreateInstance()方法比wsdl生成的服务代理轻得多,并且您必须编写的代码量是可比的。

服务参考是专为您无法控制或无法控制的第三方服务而设计的。

我无法想到如果您有权访问服务定义程序集,那么使用生成的服务引用比使用ChannelFactory更可取。

尤其如此,您需要操作服务wsdl以控制客户端的代码生成。