WCF 生成的 wsdl 与为创建 WCF 服务而提供的原始 wsdl 不同?

Posted

技术标签:

【中文标题】WCF 生成的 wsdl 与为创建 WCF 服务而提供的原始 wsdl 不同?【英文标题】:WCF generate the wsdl was different with the original wsdl which was provided to create WCF Service? 【发布时间】:2013-02-11 12:29:09 【问题描述】:

我从老板那里得到了一个原始的 wsdl 文件,并要求我基于它创建一个 Dummy Web Service。然后创建一个客户端来测试它,使用从 Dummy Web Service 生成的新 wsdl 文件,它需要与原始 wsdl 完全相同。不幸的是,我发现由 Dummy Web Service 生成的新 wsdl 与原来的不同。谁能告诉我为什么?如何获得与原版相同的 wsdl?谢谢!

我为这个任务做了什么:

    SvcUtil.exe /sc original.wsdl --> 获取 C# 服务类并为其实现具体类(虚拟 Web 服务) svcutil /t:metadata 'http://localhost/myservice/test.svc?singlewsdl' --> 从正在运行的虚拟 Web 服务获取新的 WSDL,但它会与原来的不同 WSDLImp.exe创建Delphi客户端(测试客户端)的代理类

【问题讨论】:

你能解释一下“不同”吗?有什么区别? 【参考方案1】:

情况总是如此。您正在比较两个不同的 WSDL。一种是与您的客户端共享的虚拟 WSDL,用于使用 SvcUtil 生成服务。部署 Web 服务并查看它共享的 WSDL 后,您现在就有了一个具体的 WSDL。

您最好通过基于虚拟 WSDL 的服务调用来测试您的新服务,因为这是您可能在客户之间共享的 WSDL。 SoaupUI 能够基于您的虚拟 WSDL 生成和执行测试。

【讨论】:

感谢您的回答。 :-) 我可以使用原始的 wsdl 生成客户端来测试虚拟 Web 服务,并且它是成功的。另外,我可以使用虚拟Web服务新生成的wsdl来测试虚拟Web服务,它也很成功。唯一的区别是,如果我在这两个不同的 wsdl 文件之间进行调整,我需要更改一些客户端代码。因为它们在生成它们时具有不同的代理类类型。 正确。为了不使您的工作量增加一倍,只需担心使用虚拟 WSDL 测试您的新服务,因为这是最重要的测试。 不客气,欢迎来到 Contract First Web 服务开发! (现在去阅读我的博客abrahamdybvig.blogspot.com/2012/08/…) 谢谢各位。我很久没登录了。 :-)

以上是关于WCF 生成的 wsdl 与为创建 WCF 服务而提供的原始 wsdl 不同?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 WSDL 文件创建 WCF 代理?

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

能否结合来自 WCF 服务的 WSDL 和 XSD 数据?

WCF 服务 + SvcUtil 生成意外的对象结构

WCF 如何从 wsdl 和 xsd 生成服务 - 合同优先

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