在 Microsoft Visual Studio 2013 中导入描述SIRI Web 服务的 WSDL 文件时,出现错误:
警告 5
自定义工具警告:无法导入操作 GetProductionTimetable 中名为 FaultName 的故障。不支持的 WSDL,故障消息部分必须引用一个元素。此故障消息未引用元素。如果您对 WSDL 文档具有编辑权限,则可以通过使用“元素”属性引用架构元素来解决问题。C:\path\to\TransportationDemo\TransportationDemo\Service References\ServiceReference\Reference.svcmap 1
当使用由以色列交通部创建的 WSDL 的修改版本时,它删去了很多方法,我得到另一个错误(以及其他错误):
警告 5
自定义工具警告:无法导入 wsdl:portType
详细信息:运行 WSDL 导入扩展时引发异常:System.ServiceModel.Description.XmlSerializerMessageContractImporter
错误:来自 targetNamespace=' http://www.siri.org的组'ServiceDeliveryBodyGroup' .uk/siri '的定义无效:循环组引用。
错误源的 XPath: //wsdl:definitions[@targetNamespace=' http://new.webservice.namespace ']/wsdl:portType[@name='SOAP-Port'] C:\path\to\TransportationDemo\TransportationDemo \Service References\ServiceReference1\Reference.svcmap 1
似乎某些元素定义出现在不止一个 XSD 中。所以我尝试使用svcutil.exe
手动创建代理代码。我逐个文件添加了依赖项所需的文件。起初,我可以选择添加哪个文件,siri.xsd
或者siri\siri_base-v1.3.xsd
,因为它们都包含ServiceRequestStructure
元素的定义。
在siri.xsd
路径中,我添加了所有依赖项并最终得到上述相同的循环引用。
在siri\siri_base-v1.3.xsd
我实际上可以生成代码。我可以创建一个SOAPPortClient
对象实例。我想调用GetStopMonitoringServiceRequest
它的方法。但是为了让我能够输入必填字段,我需要一个StopMonitoringRequestStructure
对象的实例。这是在siri_stopMonitoring_service.xsd
文件中定义的,并且未包含在用于生成此代理的 XSD 列表中。当我添加此架构文件时,我也必须添加siri_stopTimetable_service.xsd
(对于 的定义MonitoringRefStructure
),然后再次出现上面的循环依赖错误消息。
我在这里不知所措,希望在 WSDL 方面有更多经验的人帮助我解决这个问题。
请注意,SIRI 在两个单独的文件中提供 Web 服务接口, siri_wsProducer.wsdl
并且siri_wsConsumer.wsdl
. 据我所知,我对与“制片人”的交互很感兴趣。
这个问题是相关的——显然是由一位开发人员提出的,如果他参与这个讨论,我将非常感谢,因为他似乎找到了解决方案: 将 WSDL 导入 .NET 项目只会创建一个空的命名空间