繁体   English   中英

调用Web服务时出现问题-使用XmlInclude或SoapInclude属性

[英]Issue calling a web service - Use the XmlInclude or SoapInclude attribute

我正在呼叫其他人的Web服务,他们提供了WSDL文件和一堆XSD文件。 我已经使用本地WSDL文件在项目中创建了Web参考,并使用xsd.exe创建了一个类。 我正在调用的网络方法是

object MyService.MyMethod(object myObj)

因此,我创建了服务的新实例以及xsd创建的对象的新实例。 Web服务文档告诉我myObj的类型为ObjectRQ(从xsd创建)。

我的代码是这样的:

MyService service = new MyService();

ObjectRQ request = new ObjectRQ();

// Set the values of request.

object result = service.MyMethod(request);

在该代码的最后一行,我得到一个错误:

不需要ObjectRQ类型。 使用XmlInclude或SoapInclude属性可以指定静态未知的类型。

我不知道是什么原因导致此错误,并且我的搜索没有任何帮助。 谁能帮我这个?

因为代理中的参数类型是对象,所以组成您的消息的XmlSerializer并不知道ObjectRQ类型。 从这个意义上讲,这是出乎意料的。 因此,基本上您要做的就是让XmlSerializer知道一种或另一种期望这种类型的信息。 一种方法是XmlInclude属性。 另一种方法是将类型添加到代理类操作的已知类型。 在数据协定中,您可以使用KnownType属性来执行此操作,但是由于您只能控制客户端,因此必须自己在代码中执行。 您可以在此处找到有关它的博客文章。

HTH。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM