Web Services 如何只使用物理wsdl文件生成服务引用

js4nwp54  于 2022-12-19  发布在  其他
关注(0)|答案(3)|浏览(228)

我已经创建和使用Web服务很多年了,并且总是能够使用Visual Studio从客户端创建服务引用。我需要使用第三方服务,但他们拒绝打开他们的安全性,这样我就可以看到wsdl并进行服务引用。这是一个面向公众的服务,所以我不认为需要那种级别的安全性,但它就是这样。
我知道这是一个n00b问题,我很惭愧问这个问题,但是当我所拥有的只是客户端通过电子邮件发送给我的wsdl的物理副本时,我如何在客户端中创建等效的服务引用信息呢?web.config更改,SOAP数据上的对象层,就像使用自动化的服务引用一样,我只想打开一个到服务的连接,并开始将其与定义的对象一起使用。
据我所知,第三方服务不是WCF,而是SOAP。我使用的是VS2010。

dkqlctbz

dkqlctbz1#

这可能是最简单的方法

  • 右键单击项目并选择“添加服务引用...”
  • 在地址中:框中,输入下载/修改的wsdl的物理路径(C:\test\project....)。
  • 点击开始
8yparm6h

8yparm6h2#

有两种方法可以实现这一点。您可以使用IDE生成WSDL,也可以通过命令行生成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

jyztefdp

jyztefdp3#

前面介绍了如何从本地文件导入,但您的WSDL引用了一个或多个XSD的可能性很小,您将收到错误:

您必须下载所有引用的XSD文件,并将它们放在与引用的WSDL相同的目录中。然后您必须手动编辑WSDL,并将schemaLocation更改为本地下载的文件。
之前

<wsdl:types>
    <xsd:schema targetNamespace="http://tempuri.org/Imports">
      <xsd:import schemaLocation="http://gate.somesite.local:8084/Shop/SomeService.svc?xsd=xsd0" namespace="http://tempuri.org/" />
      <xsd:import schemaLocation="http://gate.somesite.local:8084/Shop/SomeService.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
      <xsd:import schemaLocation="http://gate.somesite.local:8084/Shop/SomeService.svc?xsd=xsd2" namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
    </xsd:schema>
  </wsdl:types>

之后

<wsdl:types>
    <xsd:schema targetNamespace="http://tempuri.org/Imports">
      <xsd:import schemaLocation="tempuri.org.xsd" namespace="http://tempuri.org/" />
      <xsd:import schemaLocation="schemas.microsoft.com.2003.10.Serialization.xsd" namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
      <xsd:import schemaLocation="schemas.microsoft.com.2003.10.Serialization.Arrays.xsd" namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
    </xsd:schema>
  </wsdl:types>

请注意,这些下载的XSD文件也有可能引用Web地址。
就像这样:
之前

<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/DaxServiceLibrary.Messages" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/DaxServiceLibrary.Messages" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import schemaLocation="http://gate.somesite.local:8084/Shop/DaxService.svc?xsd=xsd2" namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />

之后

<xs:schema xmlns:tns="http://schemas.datacontract.org/2004/07/DaxServiceLibrary.Messages" elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/DaxServiceLibrary.Messages" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:import schemaLocation="schemas.microsoft.com.2003.10.Serialization.Arrays.xsd" namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />

相关问题