【发布时间】:2015-05-27 15:37:39
【问题描述】:
尝试在 C# .Net 4.0 中为此 wsdl 定义的 Web 服务生成代理客户端时遇到问题:link(我不管理此服务,它似乎是基于 Axis2 MTOM Java服务)
这是生成器的反馈:
1):
Details: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.DataContractSerializerMessageContractImporter
Error: Object reference not set to an instance of an object.
XPath to the source of error: //wsdl:definitions[@targetNamespace='http://sls.ws.coliposte.fr']/wsdl:portType[@name='ServiceV3WS']
2):
Error: Unable to import wsdl:binding
Detail: An error occurred while importing wsdl:portType which depends wsdl:binding.
XPath to wsdl:portType: //wsdl:definitions[@targetNamespace='http://sls.ws.coliposte.fr']/wsdl:portType[@name='ServiceV3WS']
XPath to the source of error: //wsdl:definitions[@targetNamespace='http://sls.ws.coliposte.fr']/wsdl:binding[@name='SlsServiceWSSoapBinding']
3):
Error: Unable to import wsdl:port
Detail: An error occurred while importing wsdl:binding which depends wsdl:port.
XPath to wsdl:binding: //wsdl:definitions[@targetNamespace='http://sls.ws.coliposte.fr']/wsdl:binding[@name='SlsServiceWSSoapBinding']
XPath to the source of error: //wsdl:definitions[@targetNamespace='http://sls.ws.coliposte.fr']/wsdl:service[@name='SlsServiceWS']/wsdl:port[@name='SlsServiceWSPort']
- 这些错误对我来说似乎很神秘,但似乎错误 2 和 3 取决于错误 1。所以我的假设首先是此服务不兼容(例如,
portType未使用正确的路径定义)。因此,我尝试使用 wsdl 验证器对其进行验证(我尝试了 wsdl-analyzer.com),它返回给我一切正常。 - 所以我的第二个假设是我以错误的方式生成代理:
- 我尝试通过 Visual Studio (2012) 中的“添加服务引用”菜单选项使用“标准 WCF 方式”。
- 我还尝试使用 svcutil.exe (v 4.0.30319.xxx) 生成客户端代理。显然,它返回相同的错误。 (似乎 svcutil 被 VS 用于后端。)
我的期望:
嗯,我在 SO 上看到了很多关于这种代理生成的相关问题。但我的主要问题是我真的不明白真正的问题是什么。所以我决定发布一个新问题来请求解释这些错误:它们是什么意思,为什么会出现这样的错误以及生成这样的代理的替代方法/工具是什么。
所以这是我在 SO 上的第一篇文章,请随时查看和评论。
提前谢谢你,再见。
【问题讨论】:
标签: c# web-services wcf wsdl svcutil.exe