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

Removing Extra WCF namespace from WSDL

我在使用 WCF 中的命名空间时遇到问题。我以前从未做过。我已经尝试了很多关于 google 的解决方案。但是我还是找不到解决办法。

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

  1. 合同(服务合同)
  2. 服务(代码隐藏)
  3. 主机(服务主机)
  4. 模型(DataContract classes)

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

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

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

因为在代理class中生成DataContract class时,它正在被复制。意思是如果我在我的 Models 项目中有一个 class ClassA,那么它会给我 2 classes 作为 ClassAClassA1.

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

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

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

I also want to avoid ChannelFactory method, because there are a lot of OperationContract functions. So, don't want to code that much with hand but would like it to be auto generated in right fashion.

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

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

如果您有权访问服务定义程序集,我绝对无法想到使用生成的服务引用比使用 ChannelFactory 更好的情况。

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