Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何共享WCF WSDL和XSD';向无法访问该服务的客户端发送(尚未)?_C#_Wcf_Xsd_Wsdl - Fatal编程技术网

C# 如何共享WCF WSDL和XSD';向无法访问该服务的客户端发送(尚未)?

C# 如何共享WCF WSDL和XSD';向无法访问该服务的客户端发送(尚未)?,c#,wcf,xsd,wsdl,C#,Wcf,Xsd,Wsdl,我尝试生成WSDL,然后使用客户机手动生成WSDL中的每个XSD。该服务目前仅在我的本地主机上,尚未发布 客户端收到以下错误: 该文件已被理解,但无法处理。 WSDL文档包含无法解析的链接。 下载“”时出错http://localhost:xxxx/MyService.svc?xsd=xsd0'. 无法连接到远程服务器无法建立连接,因为 目标计算机主动拒绝它127.0.0.1:xxxx 应该如何生成和共享服务WSDL和XSD,以便它们可以开始对客户机进行编码(无需访问服务atm) 编辑 这些问

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

客户端收到以下错误:

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

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

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

WSDL


XSD


编辑2: 多亏了
@印度程序员
,我才能够生成一个代理类,用这个命令进行编程:

“C:\Program Files\Microsoft SDK\Windows\v7.1\Bin\svcutil.exe”-noconfig-namespace:*,SERVICE.INTERFACE.namespace-serializer:datacontractserializerhttps://My-PC/SvrLocation/MyService.svc?wsdl

(托管在本地IIS中)

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

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

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

替换http://localhost:xxxx/MyService.svc?xsd=xsd0 具有相应的文件名

<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>

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

您可以从本地主机下载wsdl文件。 要执行此操作,请转到“”
基于此wsdl,您可以使用wsdl工具生成服务代理。

有关如何生成代理的更多信息,请参见

可能会有帮助。谢谢,.NET 4.5使用内置的?singleWsdl而不是?wsdlI看起来非常方便。我不知道如何选择“答案”。我使用@Indian Programmer和@Kristof的答案获得了一个.cs文件,该文件可以根据它进行编程(包含服务合同和数据合同).I更改
schemaLocation=“localfile.xsd”
然后使用
wsdl.exe file.wsdl localfile.xsd localfile2.xsd localfile3.xsd
所以基本上他们都帮助我解决了这个问题。不要使用wsdl.exe,使用svcutil.exe生成代理文件。我已经更新了答案。生成的.cs文件应该包含数据契约吗?使用
wsdl.exe
时,.cs拥有所有的xsd(DataContract类)和可编程的服务(ServiceContract)。当我尝试此(svcuti)时,它只提供ServiceContract,如果您使用此.cs,那么您将如何编程DataContract类(它们仅在XSD中)?svcutil调用是否出错。您是否已将所有xsd文件添加到svcutil,并且它们的链接也应在wsdl中保留?首先,我尝试使用更改后的wsdl进行这些更改。
在代理中不包括DataContract类,因此,然后我直接针对ser尝试使用svcutil和上面的其他参数vice.这按预期生成了一个代理类。(仍然需要测试它)
“C:\Program Files\Microsoft SDK\Windows\v7.1\Bin\svcutil.exe”-noconfig-namespace:*,SERVICE.INTERFACE.namespace-serializer:datacontractserializerhttps://My-PC/SvrLocation/MyService.svc?wsdl
(托管在本地IIS中)这似乎是我需要的,但我无法确定如何更改自动生成的WSDL文件中的url/文件名。您如何修改schemaLocation属性?@JabberwockyDecompiler您必须使用浏览器中的“另存为”菜单将WSDL文件下载到定位机。
<xs:import schemaLocation="http://localhost:xxxx/MyService.svc?xsd=xsd1" 
  namespace="http://schemas.microsoft.com/2003/10/Serialization/"/>
<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"