这是对这个问题的跟进。
正如@Benjamin here所建议的那样,我现在正在尝试为我的 wsdl 添加服务参考(而不是 Web 参考)。这是相关wsdl的网址:
问题是 Visual Studio 生成一个空的代码文件:
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:2.0.50727.3603
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace test.ServiceReference1 {
}
当我尝试使用 svcutil 手动生成代码时,我得到以下信息:
C:\temp>svcutil https://eu.link.fiatauto.com/tsi/DDUWsAut.php?wsdl Microsoft (R) 服务模型元数据工具 [Microsoft (R) Windows (R) Communication Foundation,版本 3.0.4506.2152] 版权所有 (c) 微软公司。版权所有。 尝试从“https://eu.link.fiatauto.com/tsi/DDUWsAut”下载元数据。 php?wsdl' 使用 WS-Metadata Exchange 或 DISCO。 错误:无法导入 wsdl:portType 详细信息:运行 WSDL 导入扩展时引发异常:System.Se rviceModel.Description.XmlSerializerMessageContractImporter 错误: ' ' 字符,十六进制值 0x20,不能包含在名称中。 参数名称:名称 错误源的 XPath://wsdl:definitions[@targetNamespace='urn:ddu']/wsdl:portT 类型[@name='dduPortType'] 错误:无法导入 wsdl:binding 详细信息:导入 wsdl:portType 时出错,该 wsdl:binding 是 de 挂在。 wsdl:portType 的 XPath: //wsdl:definitions[@targetNamespace='urn:ddu']/wsdl:port 类型[@name='dduPortType'] 错误源的 XPath://wsdl:definitions[@targetNamespace='urn:ddu']/wsdl:bindi ng[@name='dduBinding'] 错误:无法导入 wsdl:port 详细信息:导入 wsdl:binding 时出错,该 wsdl:port 是依赖的 继续。 XPath 到 wsdl:binding: //wsdl:definitions[@targetNamespace='urn:ddu']/wsdl:bindi ng[@name='dduBinding'] 错误源的 XPath://wsdl:definitions[@targetNamespace='urn:ddu']/wsdl:servi ce[@name='ddu']/wsdl:port[@name='dduPort'] 正在生成文件... 警告:未生成任何代码。 如果您尝试生成客户端,这可能是因为元数据文档 评论不包含任何有效的合同或服务 或者因为发现所有合同/服务都存在于 /reference assembl 即。验证您是否将所有元数据文档传递给该工具。 警告:如果您想从模式生成数据协定,请确保 使用 /dataContractOnly 选项。
也许这也与尝试通过添加 Web 引用而不是服务引用来使用服务时出现问题的事实有关(请参阅我的其他问题)?
我想那个 wsdl 有问题,但我找不到到底是什么。
由于这是已被其他人使用的第三方服务,我认为他们不会愿意更改他们的服务,那么是否有任何解决方法可以让 .NET 与该 Web 服务通信?