WSDL';s在生成代理时出错

本文关键字:代理 出错 WSDL | 更新日期: 2023-09-27 18:21:43

我工作的公司确实与外部供应商合作开发我们的软件。我的任务是创建我的第一个windows服务,以便与供应商的web服务进行通信。供应商给了我们一份他们的WSDL和39个XSD文件的副本。我可以毫无问题地将XSD文件转换为类文件。然而,当我尝试转换WSDL时,我会得到以下错误:

使用wsdl.exe时

错误:无法导入绑定"BasicHttpBinding_ITrakManService"来自命名空间'http://tempuri.org/"。-无法导入操作"AddRedactedDocument"。-元素'http://tempuri.org/:AddRedactedDocument"缺失。

使用svcutil.exe时

错误:无法导入wsdl:portType详细信息:运行WSDL导入扩展时引发异常:System.ServiceModel.Description.DataContractSerializerMessageContractImporter错误:具有目标命名空间"的架构http://tempuri.org/'不可能建立

XPath到错误源:

//wsdl:definitions[@targetNamespace='http://tempuri.org']/wsdl:portType[@name="TrakManService"]错误:无法导入wsdl:binding详细信息:导入wsdl:binding所依赖的wsdl:portType时出错。XPath到wsdl:portType://wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='TrakManService']

XPath到错误源:

//wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='BasicHttpBinding_ITrakManService']

正在生成文件。。。警告:未生成任何代码。如果您试图生成客户端,这可能是因为元数据文件不包含任何有效的合同或服务,或者因为发现所有合同/服务都存在参考组件。验证是否已将所有元数据文档传递给工具

我看到一些人提到将wsdl的导入部分更改为include,但没有一个导入引用显式XSD,作为参考,这是导入部分。

-<wsdl:types>
-<xsd:schema targetNamespace="http://tempuri.org/Imports">
<xsd:import namespace="http://tempuri.org/" schemaLocation="http://vcp01xred-grd.clerkdev.clerk.local:8090/TrakManWebService.svc?xsd=xsd0"/>
<xsd:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" schemaLocation="http://vcp01xred-grd.clerkdev.clerk.local:8090/TrakManWebService.svc?xsd=xsd1"/>
<xsd:import namespace="http://schemas.datacontract.org/2004/07/TrakManBusiness" schemaLocation="http://vcp01xred-grd.clerkdev.clerk.local:8090/TrakManWebService.svc?xsd=xsd2"/>
<xsd:import namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" schemaLocation="http://vcp01xred-grd.clerkdev.clerk.local:8090/TrakManWebService.svc?xsd=xsd3"/>
</xsd:schema>
</wsdl:types>

很抱歉,如果这对WSDL专家来说是一个愚蠢的问题,这是我的尝试。我还在WSDL所在的同一目录中的XSD文件中尝试过这种方法,但错误是相同的。

WSDL';s在生成代理时出错

已经经历过很多次,如果有多个xsd,wsdl到java的转换(或其他转换失败)。一个对我有效的快速解决方案是,将所有XSD组合到一个XSD中,然后写下WSDL,这是一项非常痛苦的任务,但可能会奏效。当存在循环和更深层次的导入时,导入将失败。