【发布时间】:2020-10-20 13:24:20
【问题描述】:
我正在尝试将一些服务器代码从 .Net 4.7 迁移到 .Net Core 3.1,以便我们可以在 Linux 主机上运行。
有两个使用 SOAP 连接的服务。一个移植了零更改,但另一个在使用 WSDL 文件导入时出错:
http://uat.risc.enexusrental.co.uk/SOAP/IndividualService.php?wsdl
我不是 SOAP 专家,并且只使用过通过导入 WSDL 文件生成的代码,因此这些错误对我来说意义不大。
无法导入 wsdl:port 详细信息:导入 wsdl:port 所依赖的 wsdl:binding 时出错。 XPath 到 wsdl:binding: wsdl:definitions[@targetNamespace='http://uat.risc.enexusrental.co.uk']/wsdl:binding[@name='IndividualServiceHttpPost'] 错误源的 XPath://wsdl:definitions[@targetNamespace='http://uat.risc.enexusrental.co.uk']/wsdl:service[@name='IndividualService']/wsdl:port[@name= '个人服务HttpPost'] 无法导入 wsdl:binding 详细信息:未处理命名空间“http://schemas.xmlsoap.org/wsdl/http/”中所需的 WSDL 扩展元素“绑定”。 错误源的 XPath://wsdl:definitions[@targetNamespace='http://uat.risc.enexusrental.co.uk']/wsdl:binding[@name='IndividualServiceHttpPost'] 无法导入 wsdl:port 详细信息:导入 wsdl:port 所依赖的 wsdl:binding 时出错。 XPath 到 wsdl:binding: //wsdl:definitions[@targetNamespace='http://uat.risc.enexusrental.co.uk']/wsdl:binding[@name='IndividualServiceHttpGet'] 错误源的 XPath://wsdl:definitions[@targetNamespace='http://uat.risc.enexusrental.co.uk']/wsdl:service[@name='IndividualService']/wsdl:port[@name= 'IndividualServiceHttpGet'] 无法导入 wsdl:binding 详细信息:未处理命名空间“http://schemas.xmlsoap.org/wsdl/http/”中所需的 WSDL 扩展元素“绑定”。 错误源的 XPath://wsdl:definitions[@targetNamespace='http://uat.risc.enexusrental.co.uk']/wsdl:binding[@name='IndividualServiceHttpGet']
为了简化调试,我创建了简单的命令行应用程序,一个用于 .Net 4.7,另一个用于 Core 3.1。
导入对 .Net 4.7 非常有效,我可以调用该服务(如预期的那样)。
为 Core 3.1 导入会出现上述错误,并且在调用客户端初始化时会返回以下错误:
Client.Channel = 'Client.Channel' 引发了“System.ServiceModel.CommunicationObjectFaultedException”类型的异常
使用 svcutil.exe 手动导入时遇到同样的错误。
在谷歌上搜索了 3 天后,我不再继续,因为每个问题似乎都不同,并且没有一个解决方案有效。
谁能解释一下这些错误的真正含义(我不是 SOAP 专家),如果可能的话,我需要做些什么来解决这些错误?
【问题讨论】:
-
@Gusman 感谢您的建议,但我的代码没有似乎是他们的解决方案的 XHttpBinding。
-
不,但你的问题是一样的,.net core 不支持的各种绑定,例如:
/wsdl:binding[@name='IndividualServiceHttpGet'] -
所以这些应该在尝试导入之前从 WSDL 中删除?我是 WSDL 的新手,所以不确定该怎么做。
标签: c# .net .net-core soap wsdl