【发布时间】:2015-12-07 06:24:33
【问题描述】:
在 Microsoft Visual Studio 2013 中导入描述 SIRI web service 的 WSDL 文件时,出现错误:
警告 5
自定义工具警告:无法导入操作 GetProductionTimetable 中名为 FaultName 的故障。不支持的 WSDL,故障消息部分必须引用一个元素。此故障消息未引用元素。如果您对 WSDL 文档具有编辑权限,则可以通过使用“元素”属性引用架构元素来解决问题。 C:\path\to\TransportationDemo\TransportationDemo\Service References\ServiceReference\Reference.svcmap 1
当使用a modified version of the WSDL, created by the Israeli Ministry of Transporation 时,会删掉很多方法,我得到另一个错误(以及其他错误):
警告 5
自定义工具警告:无法导入 wsdl:portType
详细信息:运行 WSDL 导入扩展时引发异常:System.ServiceModel.Description.XmlSerializerMessageContractImporter
错误:来自 targetNamespace='http://www.siri.org.uk/siri' 的组“ServiceDeliveryBodyGroup”的定义无效:循环组引用。
错误源的 XPath: //wsdl:definitions[@targetNamespace='http://new.webservice.namespace']/wsdl:portType[@name='SOAP-Port'] C:\path\to\TransportationDemo\TransportationDemo\Service References\ServiceReference1\参考.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 和 Visual Studio 方面有更多经验的人提供帮助,或者只是一般的 SOAP 服务(或特别是这个服务)来解决这个问题。
请注意,SIRI 在两个单独的文件中呈现 Web 服务接口,siri_wsProducer.wsdl 和 siri_wsConsumer.wsdl。据我所知,我有兴趣与“生产者”进行交互。
这个问题是相关的 - 它显然是由一位开发人员提出的,如果他参与这次讨论,我将非常感谢他,因为他似乎找到了解决方案: Importing WSDL into a .NET project only creates an empty namespace
【问题讨论】:
-
我尝试了第一个 SIRI 链接和第二个以色列链接,都不包含 WSDL 文件。您能否更新正确的链接,以便我们检查 WSDL?
-
谢谢@Abel。实际上这两个站点都包含 WSDL 文件。这是direct link to the original SIRI schemas 和direct link to the modified Israeli MOT schemas
-
德克萨斯州。我相信你,但我的意第绪语(如果是这样的话)不是很好。
-
我尝试导入模式,收到相同的错误(所以它是可重现的,所以可以肯定),但是在玩了一段时间之后,这些模式的绝对复杂性并没有轻易揭示它们问题。很抱歉,但这可能是一个研究问题,为此,我没有时间......
-
@Abel - 感谢您的投入和努力。知道它是可重现的很有用。希望其他人已经体验并解决了这些问题,因为这是一个所谓的“严重”协议。
标签: web-services visual-studio xsd wsdl siri-xml