我在尝试使用此wsdl:link定义的Web服务在C#.Net 4.0中生成代理客户端时遇到问题(我不管理此服务,它似乎是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']
portType
没有用正确的路径定义)。所以我尝试使用wsdl验证器验证它(我试过wsdl-analyzer.com)并且它返回我一切都没问题。我的期望:
好吧,我已经看到很多关于这种代理生成的相关问题。但我的主要问题是我真的不明白实际问题是什么。所以我决定发布一个新问题来请求解释这些错误:它们是什么意思,为什么会出现这样的错误以及生成这种代理的替代方法/工具是什么。
所以这是我关于SO的第一篇文章,所以请随时查看和评论。
先谢谢你,见到你。
答案 0 :(得分:4)
我花了几个小时才找到有关此问题的信息,我找到了问题的答案并解决了问题。
我查看了svcutil.exe
documentation page并尝试了与我的问题最匹配的选项(“随机”是实际术语)。
经过几次试错循环后,似乎 / serializer:XmlSerializer 选项“生成使用XmlSerializer进行序列化和反序列化的数据类型”在我的案例中缺失。 有关信息,默认值为 / serializer:Auto “生成标有Serializable属性的类。”
关于我以前的问题,我可以说:
对问题的理解:现在,这些错误对我来说仍然很神秘。这个“未设置为对象实例的对象引用”实际上并不是“真实”问题的良好描述。也许这个罪名System.ServiceModel.Description.DataContractSerializerMessageContractImporter
的名字是我错过的线索。
构建此类代理的替代方法:svcutil
是默认“添加服务引用”菜单选项的替代方法。它允许根据目标服务的上下文使用一组自定义选项。作为一个缺点,它很少集成到Visual Studio体系结构的常规工作流程中。因此,必须“手动”集成生成的输出代理类及其配置文件。因此,每次更新代理时,这最终都不是一项不可能完成的任务。
总而言之,可能需要做的改进是让用户在VS生成UI中配置自己的一组参数(如果你在VS项目中看到这个线程并在Microsoft工作,你知道该怎么做:))< / p>
谢谢。 期待这个答案可以帮助处于类似情况的任何人。