2013-02-26 70 views
1

我从老板那里得到了一个原始的wsdl文件,并要求我根据它创建一个虚拟Web服务。然后创建一个客户端,通过使用从虚拟Web服务生成的新wsdl文件来测试它,并且它需要与原始wsdl完全相同。不幸的是,我发现由虚拟Web服务生成的新的wsdl与原始的不同。任何人都能告诉我为什么?如何获得与原始版本相同的wsdl?谢谢!WCF生成wsdl与提供用于创建WCF服务的原始wsdl不同?

我所做的这个任务:

  1. SvcUtil.exe /sc original.wsdl - >获得C#服务类并实现它的具体类(虚拟网络服务)
  2. svcutil /t:metadata 'http://localhost/myservice/test.svc?singlewsdl' - >来获得新的从运行虚拟网络服务的WSDL,但它会不同从原来的一个
  3. WSDLImp.exe创建代理类德尔福客户(测试客户端)
+0

你能解释“不同”吗?有什么区别? – nvoigt 2013-02-26 06:29:21

回答

1

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

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

+0

感谢您的回答。 :-)我可以使用原始的wsdl来生成客户端来测试虚拟web服务,并且它是成功的。另外,我可以使用虚拟web服务生成的新wsdl来测试虚拟web服务,并且它也是成功的。唯一不同的是,如果我在这两个不同的wsdl文件之间进行调整,我需要更改一些客户端代码。因为它们在生成时具有不同的代理类类型。 – 2013-02-26 07:24:05

+0

正确。为了不增加你的工作量,你只需要担心使用虚拟WSDL测试你的新服务,因为这是最重要的测试。 – EtherDragon 2013-02-26 07:26:03

+0

没错。谢了哥们! – 2013-02-26 23:10:54