2009-06-03 20 views
22

我有一个旧的WSDL文件,我想使用WCF与服务进行通信。如何使用WSDL文件创建WCF代理?

WSDL是从ASMX生成的(我想,但我不确定)。

与之沟通需要什么步骤?

+1

它应该不会有什么事情生成的WSDL。 – Cheeso 2009-06-03 16:16:34

回答

21

使用svcutil.exe的创建一个WCF代理来调用服务。详情here

+1

好吧,我会放弃!在Visual Studio和Windows SDK中有一个文件wsdl.exe。我用它来生成代理类,这是否与svcutil.exe相同?一旦我生成代理文件,我应该如何使用这个生成代理? – Raha 2009-06-03 23:13:54

+5

不一样。 svcutil.exe是一个为WCF生成代理和存根(以及其他东西)的工具。对于ASMX,wsdl.exe的作用类似。截至2006年,WCF已经取代ASMX成为.NET中首选的Web服务编程框架。所以,ASMX是旧的,WCF是新的。 – Cheeso 2009-06-04 13:40:09

25

右键单击您的项目,然后选择“添加服务参考”。指向WSDL。点击“确定”。这应该是全部。

enter image description here

+3

我找不到“浏览”按钮 - 必须在Visual Studio 2010中复制/粘贴wsdl文件的完整路径。 – 2011-11-30 00:08:53

+0

我没有引用“浏览”按钮。你什么意思? – 2011-11-30 00:15:55

+3

哦,我的意思是,我习惯于应用程序,需要你输入一个文件名也有一个“浏览”或“...”按钮,所以你可以选择的位置。 Visual Studio UI有点误导性,因为它不会让你这样做 - 你必须手动复制/粘贴wsdl文件的位置。就像我知道这件事后那么简单,起初它肯定是令人困惑的。 – 2011-12-07 20:14:31

8

wsdl.exe是旧的Web服务(1.1)创建代理的方式。首先要尝试的是“添加服务引用”,如前所述。这使用svcutil.exe来创建代理。如果您需要更多地控制代理的创建方式,可以在命令行中使用svcutil.exe和各种开关。

有了这说...我有旧的Web服务wsdls麻烦。特别是包含重载操作的旧版Apache AXIS Web服务。请参阅我的文章here了解完整的详细信息。 (我的问题仍然没有解决,我希望你不会遇到同样的问题,但如果你这样做,并找出它们,请回答我的问题。:)

+1

Web服务中没有“重载”的概念。阿帕奇应该知道得更好,希望他们现在已经学会了。他们还习惯于做一些有趣的事情,例如发布引用类似apachesoap的模式:XmlElement,然后不定义这些类型。如果您使用Apache代码来使用该服务,可能运行得很好,但是否则不会。 – 2009-06-04 00:22:15

+0

感谢您的评论,约翰。显然,WSDL 1.1允许重载? (请参阅http://webservices.xml.com/pub/a/ws/2003/01/08/randyray.html) 我提到的同一个服务包括一堆svcutil无法理解的故障类型。我花了一段时间才开始工作,只有在我对代理代码进行了重大编辑之后。 – 2009-06-04 00:57:57

相关问题