WSDL在代理生成期间遇到错误的新手

时间:2014-09-12 14:01:40

标签: c# wsdl svcutil.exe

我工作的公司与外部供应商合作开发我们的软件。我被赋予了创建我的第一个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:定义[@targetNamespace =' http://tempuri.org'] / WSDL:portType的[@name =' ITrakManService']         错误:无法导入wsdl:binding详细信息:导入wsdl:binding依赖的wsdl:portType时出错。 XPath的   to wsdl:portType:   // WSDL:定义[@targetNamespace =' http://tempuri.org/'] / WSDL:portType的[@name =' ITrakManService']

     

XPath到错误来源:

     

// WSDL:定义[@targetNamespace =' http://tempuri.org/'] / WSDL:结合[@name =' BasicHttpBinding_ITrakManService']

     

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

我看到一些人引用将wsdl的imports部分更改为includes,但没有一个导入引用显式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专家来说是一个愚蠢的问题,这是我尝试做的一个。我也尝试过将这个XSD文件放在与WSDL相同的目录中,并且错误是相同的。

1 个答案:

答案 0 :(得分:0)

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