5

我尝试生成 WSDL,然后使用客户端手动生成在 WSDL 中找到的每个 XSD。该服务目前仅在我的本地主机上,尚未发布。

客户端收到以下错误:

该文件已被理解,但无法处理。WSDL 文档包含无法解析的链接。下载“http://localhost:xxxx/MyService.svc?xsd=xsd0”时出错。无法连接到远程服务器 由于目标机器主动拒绝,无法建立连接 127.0.0.1:xxxx

应该如何生成和共享服务 WSDL 和 XSD,以便它们可以开始对客户端进行编码(无需访问服务 atm?

编辑 问题与 WSDL/XSD 中的这些相关

WSDL

<xsd:schema targetNamespace="http://tempuri.org/Imports">
    <xsd:import schemaLocation="http://localhost:xxxx/MyService.svc?xsd=xsd0" 
           namespace="http://tempuri.org/"/>
    <xsd:import schemaLocation="http://localhost:xxxx/MyService.svc?xsd=xsd1"  
           namespace="http://schemas.microsoft.com/2003/10/Serialization/"/>
    <xsd:import schemaLocation="http://localhost:xxxx/MyService.svc?xsd=xsd2" 
           namespace="**MYNAMESPACE**"/>
</xsd:schema>

XSD

<xs:import schemaLocation="http://localhost:xxxx/MyService.svc?xsd=xsd1" 
  namespace="http://schemas.microsoft.com/2003/10/Serialization/"/>

编辑2: 感谢@The Indian Programmmer我能够生成一个代理类来使用这个命令进行编程:

"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\svcutil.exe" -noconfig -namespace:*,SERVICE.INTERFACE.NAMESPACE -serializer:datacontractserializer https://My-PC/SvrLocation/MyService.svc?wsdl (托管在本地 IIS 中)

4

2 回答 2

7

首先通过运行您的服务浏览到您的 wsdl。

然后分别浏览到 WSDL 中的所有 xsd 并将它们保存为 xsd 文件。

使用新的 xsd 相对路径更新您的 wsdl。只需将 xsd 的整个链接替换为其名称即可。

Replace http://localhost:xxxx/MyService.svc?xsd=xsd0 with respective FileName

<xsd:schema targetNamespace="namespace">
<xsd:import schemaLocation="Messages.xsd" namespace="namespace"/>
<xsd:import schemaLocation="DomainTypes.xsd" namespace="namespace"/>
<xsd:import schemaLocation="StreamBody.xsd" namespace="namespace"/>
</xsd:schema>

更新:如何生成代理文件

svcutil  -noconfig -namespace:*,ServiceNameSpace -serializer:datacontractserializer  "Service.wsdl" "DomainTypes.xsd" "Messages.xsd" "StreamBody.xsd"

所有文件都应该在同一个文件夹中。

于 2012-10-31T09:30:15.140 回答
0

您可以从本地主机下载 wsdl 文件。为此,您可以转到“ http://localhost:xxx/MyService.svc?wsdl
。基于此 wsdl,您可以使用 wsdl 工具生成服务代理。
有关如何生成代理的更多信息,请参阅此问题

于 2012-10-31T09:32:53.167 回答