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

本文关键字:WCF 空间 WSDL 删除 | 更新日期: 2023-09-27 18:10:06

我在使用WCF中的命名空间时遇到了问题。我以前从来没有做过。我已经尝试了很多在谷歌上找到解决方案。但是我仍然找不到一个解决办法。

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

  1. 合同(ServiceContract)
  2. 服务(后台代码)
  3. 主机(ServiceHost)
  4. 模型(数据合约类)

当我在IIS中托管服务时,它正在生成WSDL,但有一些名称空间我没有定义如下:

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

问题是我想通过同一个命名空间访问所有的服务契约和数据契约。

因为当在代理类中生成DataContract类时,它被复制了。意思是如果我在我的Models项目中有一个类ClassA,那么它会给我两个类ClassAClassA1

我看到在代理类中,这些都在不同的命名空间中。所以,我想避免这个

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

非常感谢任何帮助。

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

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

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

服务引用是为调用无法控制或内部可见的第三方服务而设计的。

如果您可以访问服务定义程序集,我绝对不会想到使用生成的服务引用比使用ChannelFactory更好的情况。

对于需要操作服务wsdl以控制客户端代码生成的情况尤其如此。