【问题标题】:New to WSDL's getting errors during proxy generationWSDL 在代理生成期间出现错误的新手
【发布时间】:2014-11-06 17:46:39
【问题描述】:

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

错误源的 XPath:

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

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

我看到一些人提到将 wsdl 的导入部分更改为包含,但没有一个导入引用显式 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 文件,并且错误是相同的。

【问题讨论】:

    标签: c# wsdl svcutil.exe


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-04
      相关资源
      最近更新 更多