![](/img/trans.png)
[英]ASMX Service Error - Use the XmlInclude or SoapInclude attribute to specify types that are not known statically
[英]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.