簡體   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