gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:34:43 24 4
gpt4 key购买 nike

我调用的是别人的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);

在该代码的最后一行出现错误:

The type ObjectRQ was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically.

我不知道是什么导致了这个错误,我的搜索也没有找到任何有用的信息。谁能帮我解决这个问题?

最佳答案

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

HTH.

关于c# - 调用 Web 服务时出现问题 - 使用 XmlInclude 或 SoapInclude 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1508140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com