下载 WCF 服务公开的所有 WSDL 文件的最佳方法是啥?
Posted
技术标签:
【中文标题】下载 WCF 服务公开的所有 WSDL 文件的最佳方法是啥?【英文标题】:What is the best way to download all of the WSDL files exposed by a WCF service?下载 WCF 服务公开的所有 WSDL 文件的最佳方法是什么? 【发布时间】:2010-09-22 03:32:39 【问题描述】:下载由 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 中。
【问题讨论】:
【参考方案1】:有一个简单的代码 sn-p 可以下载 WSDL 和所有所属的 XSD 文件以供离线使用(例如用于代码生成)。
更新
显示代码 sn-p 的博客不再可用。幸运的是,Pablo Diez 根据我的博文创建了一个小项目并将其上传到 github。它现在在这里可用:https://github.com/pablod/xsd-downloader
【讨论】:
链接没有过时 - 如果您使用 Java,该解决方案是一个很好的解决方案。 我不是这个意思。我在尝试链接时遇到 404 或 DNS 错误,所以我永远无法阅读解决方案。网站显然又恢复了,所以我的评论不再有效...... 链接又死了。请您尽可能更新您的答案以包含相关信息,因为我们是encouraged to do to avoid this issue..【参考方案2】:同时,disco.exe 被微软认为是过时的技术。
您可以使用svcutil.exe /t:metadata
在 WCF 时代实现相同的目标。其他好处是支持其他功能,例如 WS-Policy。
从 URL 保存架构:
svcutil /t:metadata http://host/pathtomy.svc?wsdl
从程序集中保存模式,例如在自动构建中:
svcutil /t:metadata c:\wcfweb\pathToWcfServiceAssembly.dll
【讨论】:
谢谢伯纳德。有一段时间没有做任何 WCF - 你有参考吗?如果您能提供答案,我会将您的答案标记为已接受。 @ThomasBratt 你能澄清一下引用的意思吗? @Bernard 他的意思是指向 MS 页面的链接,上面说是这样。 您好 Thomas 和 @RegEdit 最新版本 Framework 4.0 的 disco.exe 文档页面 msdn.microsoft.com/en-US/library/cy2a3ybs(v=vs.100).aspx 说:此主题特定于旧技术。现在应该使用 Windows Communication Foundation 创建 XML Web 服务和 XML Web 服务客户端。 svcutil 是 WCF 相关工具的一部分msdn.microsoft.com/en-us/library/aa347733(v=vs.110).aspx希望这可以澄清事情。【参考方案3】:如果您拥有该服务,您可以探索的另一个有趣的选择是使用 Christian Weyer 的 FlatWSDL behavior,这将强制 WCF 在单个 WSDL 文档中生成所有内容,这应该使您更容易分发它。
【讨论】:
codeplex 上优秀的 WCFExtras 项目也可以用来生成单个 wsdl 文件。易于使用,在这里找到它 - wcfextras.codeplex.com【参考方案4】:看起来微软为此提供了Disco.exe。
【讨论】:
抱歉这么笨,怎么下载呢?以上是关于下载 WCF 服务公开的所有 WSDL 文件的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
使用?wsdl URI查询将LinqPad连接到WCF Web服务