.NET SOAP 客户端使用:Array

问题描述 投票:0回答:3

我正在尝试添加位于此处的 SOAP 端点:

http://ds.hitpromo.net/product

但是我收到以下错误:

脚手架代码...错误:错误:无法导入 wsdl:portType 详细信息: 运行 WSDL 导入扩展时引发异常: System.ServiceModel.Description.XmlSerializerMessageContractImporter 错误:数据类型“http://schemas.xmlsoap.org/soap/encoding/:Array” 不见了。错误源的 XPath: //wsdl:definitions[@targetNamespace='urn:ProductControllerwsdl']/wsdl:portType[@name='ProductControllerPortType'] 错误:无法导入 wsdl:绑定详细信息:导入时出错 wsdl:bind 所依赖的 wsdl:portType。 X 路径到 wsdl:端口类型: //wsdl:definitions[@targetNamespace='urn:ProductControllerwsdl']/wsdl:portType[@name='ProductControllerPortType'] 错误源的 XPath: //wsdl:definitions[@targetNamespace='urn:ProductControllerwsdl']/wsdl:binding[@name='ProductControllerBinding'] 错误:无法导入 wsdl:port

详细信息:导入 wsdl:bind 时出错,wsdl:port 是依赖于. wsdl:binding 的 XPath: //wsdl:definitions[@targetNamespace='urn:ProductControllerwsdl']/wsdl:binding[@name='ProductControllerBinding'] 错误源的 XPath: //wsdl:definitions[@targetNamespace='urn:ProductControllerwsdl']/wsdl:service[@name='ProductControllerService']/wsdl:port[@name='ProductControllerPort'] 错误:找不到与 .Net Core 应用程序兼容的端点。一个 工具发生错误。

生成服务参考失败。

据我了解,这是因为 .NET 的 SOAP 生成代码无法理解包含来自

xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/"
的类型,我已阅读过有关手动包含它的内容,但说明不清楚(包括有关此主题的其他 StackOverflow 答案),下载WSDL 和使用 import/include 不起作用。

有什么想法吗?

.net soap wsdl
3个回答
2
投票

我尝试了给定的地址

http://ds.hitpromo.net/product
并成功将其添加为项目的服务引用,没有任何问题。

也许将其添加为网络参考可能会对您有所帮助。您可以尝试“添加服务引用”=> 选择“高级”=> 然后选择“添加 Web 引用”并从那里添加它。

过去,将端点添加为网络引用为我解决了一些类似的问题。


2
投票

您可以尝试以下几件事:

1.) 创建 wsdl 的本地副本并删除有问题的 xml 命名空间。然后,在添加服务引用时将其指向您的本地副本。

2.) 尝试将服务作为 Web 引用而不是服务引用引入。添加服务参考 => 高级 => 添加 Web 参考。

3.) 您可能必须回到 .Net 4.x,因为 .Net Core 对 SOAP 服务的支持可能不够成熟,无法处理旧版 WSDL。

我在使用 .Net 4.5 和 WCF 时遇到过类似的情况 - 这里有一个链接:如何在使用旧版 SOAP 服务时创建自定义 XML 命名空间属性?


0
投票

我解决了将 WSDL 文件下载到特定路径的问题。之后,我下载了 https://schemas.xmlsoap.org/soap/encoding/ XML 文件,如 this

然后我执行了 svcutil 引用这两个文件,一切正常:

svcutil se-face-webservice.redsara.es_facturasrcf_wsdl.xml schemas.xmlsoap.org_soap_encoding_.xml

注意:dotnet-svcutil 不起作用,我使用了原始的 svcutil.exe 可执行文件。但结果适用于.NET core。

© www.soinside.com 2019 - 2024. All rights reserved.