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

Ann*_*nne 99 .net c# wsdl web-services visual-studio

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

使用公共WSDL,Visual Studio可以使用"服务引用"向导为我生成此代码.但是,如果没有公共WSDL,它似乎不起作用.

如何使用此WSDL文件生成与此Web服务进行通信的代码?

jef*_*dio 132

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

  • 面对相同的场景,你的建议为我节省了很多挫折,可能还有一些头发.当之无愧的代表已经给你了.(作为间接结果,你在所有网站上得到+100 :)) (3认同)

And*_*w M 113

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

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

>wsdl.exe [path To Your WSDL File]
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢!并且您可以使用/ o参数作为导出文件的路径.例如> wsdl.exe http://www.example.com/service.wsdl/o:C:\ Users\X\Desktop (2认同)
  • 并可选择手动添加一个命名空间,覆盖所有类,以防止与生成的类似文件发生冲突。 (2认同)

Jar*_*zur 15

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

wsdl.exe [path to your wsdl file] [paths to xsd files imported by wsdl]
Run Code Online (Sandbox Code Playgroud)

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

也许它会节省一些时间 - 当服务无法在线时,它解决了"丢失类型"错误.