2013-03-29 32 views
0

實現以下場景時遇到問題。對象類型的WCF反序列化屬性

我們目前有一個方法,期望一個'上下文'鍵值對列表。該值可以是任何類型。

目標是使此方法可用於WCF。所以我創建了一個

public List<Element> Transform(List<Element> elements) 
{ 
... Transformation of elements takes place 
} 

[DataContract(Namespace = Constants.NAMESPACE)] 
public struct Element 
{ 
    [DataMember(Order = 0, IsRequired = true)] 
    public string Key; 
    [DataMember(Order = 1, IsRequired = true)] 
    public object Value; 
} 

當我使用.Net測試項目一切工作正常。

然而,當我使用SOAP UI調用這個服務,我得到一個錯誤信息:

格式化拋出一個異常,而試圖反序列化消息:嘗試反序列化參數元素時出錯。 InnerException消息是'元素值不能將子內容作爲對象反序列化。請使用XmlNode []來反序列化這種XML模式。'。

我很難搞清楚該怎麼做。任何幫助讚賞。

我使用xml是這樣的:

<ws:Transform> 
    <ws:elements> 
      <ws:Element> 
       <ws:Key>Key1</ws:Key> 
       <ws:Value>A</ws:Value> 
      </ws:Element> 
      <ws:Element> 
       <ws:Key>Key2</ws:Key> 
       <ws:Value>B</ws:Value> 
      </ws:Element> 
     <ws:ScriptName>SetVariable</ws:ScriptName> 
    </ws:elements> 
    </ws:Transform> 

回答

1

在這種情況下,使用了SoapUI .NET技術不理解對象的目標類型。

發送對象在所有平臺上無效。事實上,你也可能會遇到.Net客戶端的錯誤。您最好的選擇是創建一個Value的通用xml表示並讓所有客戶端從xml中充滿對象

相關問題