我的应用程序需要与没有在线WSDL定义的Web服务进行通信。然而开发人员向我提供了一个WSDL文件。
使用公共WSDL Visual Studio可以使用“服务引用”向导为我生成此代码。但是没有公共WSDL似乎没有用。
如何使用此WSDL文件生成与此Web服务对话的代码?
答案 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 Tools
(Learn 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部分的文件中