将WSDL过滤到仅某些操作

时间:2012-11-19 22:11:33

标签: wcf wsdl

我有一个庞大的WSDL,但我只需要一些方法。

是否可以仅为这些方法生成WCF代理?

“完全实现”为我的DLL增加了9兆字节。

2 个答案:

答案 0 :(得分:1)

您可以手动构建数据协定和仅包含您感兴趣的操作的界面,然后将该界面与ChannelFactory一起使用,以创建仅针对这些操作的基本客户端,或者......

...您还可以从您不需要的所有操作和元素中删除WSDL,并将结果提供给svcutil.exe以创建更简单的客户端。更安全的方法是将大型WSDL提供给svcutil.exe并从生成的代码中删除不需要的内容(它更安全,因为如果删除了您不应该删除的内容,编译器会立即通知您。)

无论哪种方式,我认为你必须进行一些手动干预。

答案 1 :(得分:1)

svcutil有一个/excludeType标志。它可以在元数据导出和类型生成期间使用。

从svcutil命令行帮助:

  

/ excludeType: - 完全限定或装配限定的类型名称   从出口或验证中排除。可以在以下时使用此选项   将服务或一组服务合同的元数据导出到   从导出中排除类型。此选项不能与。一起使用   / dataContractOnly选项。 (简表:/ et)

How do I export metadata for a single contract with svcutil.exe?的答案用它来解决类似问题。

我希望类型过滤适合你,因为我不知道采用“开箱即用”的方式来做到这一点。