从WSDL文件在Visual Studio中创建Web服务代理

时间:2010-11-29 13:39:41

标签: c# .net visual-studio web-services wsdl

我的应用程序需要与没有在线WSDL定义的Web服务进行通信。然而开发人员向我提供了一个WSDL文件。

使用公共WSDL Visual Studio可以使用“服务引用”向导为我生成此代码。但是没有公共WSDL似乎没有用。

如何使用此WSDL文件生成与此Web服务对话的代码?

7 个答案:

答案 0 :(得分:132)

使用WSDL.exe对我不起作用(给我一个关于缺少类型的错误),但我能够在VS中右键单击我的项目并选择“添加服务引用”。我在地址字段中输入了wsdl文件的路径,然后点击“Go”。这似乎能够找到所有正确的类型,并将类直接添加到我的项目中。

答案 1 :(得分:110)

尝试使用WSDL.exe,然后将生成的文件(.cs)包含在项目中。

启动Visual Studio命令提示符(在开始菜单中的visual studio / tools下),然后键入

>wsdl.exe [path To Your WSDL File]

那会吐出一个文件,你复制/移动并包含在你的项目中。该文件包含一个类,它是您的服务的代理,启动该类的实例,它将具有您可以动态设置的URL属性,以及一组您可以调用的方法。它还将为通过服务接口传递的所有/任何复杂对象生成类。

答案 2 :(得分:13)

旁注:如果你本地有所有文件(不仅是wsdl文件而且还有xsd文件),你可以用这种方式调用wsdl.exe:

wsdl.exe [path to your wsdl file] [paths to xsd files imported by wsdl]

这样,wsdl.exe可以在本地解析所有依赖,并正确生成代理类。

也许它可以节省一些时间 - 当服务无法在线提供时,它解决了“丢失类型”错误。

答案 3 :(得分:3)

尝试.NET Framework SDK附带的WSDL To Proxy class tool。我以前从未使用它,但它看起来确实像你需要的那样。

答案 4 :(得分:1)

用于从命令行创建WCF代理的Microsoft Doc

您可以在与此类似的位置找到wsdl.exe的本地副本:C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 ToolsLearn more here

最后,您的Command应与此类似:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\wsdl.exe"
 /language:CS /n:"My.Namespace" https://www.example.com/service/wsdl

答案 5 :(得分:0)

将文件保存到磁盘上,然后将以下内容用作URL:

file://your_path/your_file.wsdl

答案 6 :(得分:-1)

由于Web服务的真正绑定URL位于文件中,您可以从本地计算机执行以下简单步骤:

1)将文件保存到本地计算机,例如:

C:\Documents and Settings\[user]\Desktop\Webservice1.asmx

2)在Visual Studio中右键单击您的项目>选择添加Web引用,将打开一个对话框。

3)在URL Box中复制C:\ Documents and Settings [user] \ Desktop \ Webservice1.asmx上方的本地文件位置,单击Next

4)现在您将看到显示的功能,选择您的参考名称,点击添加参考

5)你完成了!您可以开始在应用程序中将其用作命名空间,不要担心您使用的是本地文件,因为无论如何,该服务的真实URL位于Binding部分的文件中