如何仅使用物理wsdl文件生成服务引用


122

我多年来一直在创建和使用Web服务,并且始终能够使用Visual Studio从客户端创建服务引用。我有一个需要使用的第三方服务,他们拒绝打开安全性,因此我可以看到wsdl并提供服务参考。这是一个面向公众的服务,因此我看不到需要那种级别的安全性,但事实就是如此。

我知道这是一个n00b问题,我很asking愧地提出这个问题,但是当我可以使用的是客户通过电子邮件发送给我的wsdl的物理副本时,如何在客户中创建等效的服务参考信息?web.config发生变化,SOAP数据上的对象层等等。就像使用自动服务参考一样,我只想打开与服务的连接,并开始将其与定义的对象一起使用。

据我所知,第三方服务不是WCF,而是SOAP。我正在使用VS 2010 btw。预先感谢Ken


Answers:


180

这可能是最简单的方法

  • 右键单击该项目,然后选择“添加服务参考...”。
  • 在“地址:”框中,输入已下载/已修改的wsdl的物理路径(C:\ test \ project ....)。
  • 打吧

11
如果使用“复制为路径”,请取消引号。
O. Jones

当保存wsdl以传递给其他人时,chrome中来自Web服务的wsdl的“查看源代码”使我可以使用wsdl,而IE11没有。YMMV。
archangel76

68

有两种方法可以解决此问题。您可以使用IDE生成WSDL,也可以通过命令行来完成。

1.要通过IDE创建它:

在解决方案资源管理器窗格中,右键单击要将服务添加到的项目:

在此处输入图片说明

然后,您可以输入服务WSDL的路径,然后点击go:

在此处输入图片说明

2.要通过命令行创建它:

打开VS 2010命令提示符(程序-> Visual Studio 2010-> Visual Studio工具),
然后执行:

WSDL /verbose C:\path\to\wsdl

WSDL.exe然后将输出一个.cs文件供您使用。

如果您在文件中收到了其他依赖项,例如xsd,则将其添加到参数列表中:

WSDL /verbose C:\path\to\wsdl C:\path\to\some\xsd C:\path\to\some\xsd

如果需要VB输出,请/language:VB在之外使用/verbose


我收到“无法从命名空间“ blahURL”导入绑定“ blah”并且无法导入操作“ SomeRequest”,缺少元素“ xxx”。这是否意味着他们需要给我更多的支持文件,或者他们的安全性太高了,以至于我无能为力?
kfoster 2012年

听起来确实好像您缺少依赖项。打开WSDL并查看顶部。如果您看到其中包含的行,import其后是指向xsd路径的schemaLocation,则也需要这些xsd文件。
Lynn

感谢您的回复。我收到客户的一封电子邮件,以查看是否可以获取必要的xsd导入。但是,令人沮丧的是,正确完成后,我只是将一个URL弹出到ServiceReference对话框中,按一下按钮并中提琴!我大约需要3行代码才能调用服务方法。整个过程大约需要5分钟。但是我已经和这个客户端一起工作了好几个星期,却一无所获,因为他们的安全人员不会通过网络开放对任何服务定义的访问。
kfoster 2012年

太粗糙了 我本人目前正在等待VPN连接的项目。幸运的是,他们提前给了我wsdl和随附的xsd文档。因此,您确实在wsdl中找到了这些导入吗?
Lynn在2012年

是。原来有4种服务,其中2种给了我wsdl,另2种给了我xsd,因此没有任何服务的完整文件集。但是我终于有了xsd,并且能够为其中两个服务生成.cs文件,我认为其他两个也可以。谢谢。
kfoster 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.