下载 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服务

使用现有 wsdl 创建 BizTalk WCF 终结点

WCF服务中的wsdl文件在哪里

如何从现有的 WSDL 和 XSD 文件生成 WCF 服务主机

如何更改 WCf 服务的 wsdl 文件中的默认模式位置?

在运行时创建WCF服务