下载WCF服务公开的所有WSDL文件的最佳方法是什么?
例如,根WSDL文件引用以下其他WSDL文件:
<xsd:import schemaLocation="http://localhost:80/?xsd=xsd0" namespace="http://tempuri.com"/>
<xsd:import schemaLocation="http://localhost:80/?xsd=xsd1" namespace="http://tempuri.com"/>
理想情况下,可以自动执行下载,这样每次WSDL更改时,都可以轻松地将文件分发给客户或合并到文档/ SDK中。
答案 0 :(得分:31)
与此同时,disco.exe被微软视为过时的技术。
您可以使用svcutil.exe /t:metadata
在WCF时代实现相同目标。其他好处是支持其他功能,例如WS-Policy。
从网址保存架构:
svcutil /t:metadata http://host/pathtomy.svc?wsdl
从程序集中保存模式,例如在自动构建中:
svcutil /t:metadata c:\wcfweb\pathToWcfServiceAssembly.dll
答案 1 :(得分:6)
如果您拥有该服务,您可以探索的另一个有趣的选项是使用Christian Weyer的FlatWSDL behavior,它将强制WCF在单个WSDL文档中生成所有内容,这将使您更容易分发它
答案 2 :(得分:3)
看起来Microsoft提供Disco.exe来执行此操作。
答案 3 :(得分:2)
有一个简单的代码片段,可以下载WSDL和所有属于的XSD文件以供离线使用(例如代码生成)。
<强>更新强>
显示代码段的博客不再可用。幸运的是,Pablo Diez根据我的博客文章创建了一个小项目并将其上传到github。现在可以在这里找到:https://github.com/pablod/xsd-downloader