2011-10-06 53 views
0

我有一個Web服務,它總是返回一個返回object這是我寫這樣的一類:我以爲Object是一個未知類型的對象?不XmlSerializationWriter

public class ReturnObject 
{ 
    public Status Status { get; set; } 
    public Object Data { get; set; } 
} 

當我返回一個對象,就像在數據int或字符串等是確定的,但在我想返回類型化對象的列表的客戶端上運行的Web服務的Web引用收到此異常:

System.Web.Services.Protocols.SoapException:服務器無法處理請求。 ---> System.InvalidOperationException:有一個錯誤生成XML文檔 ---> System.InvalidOperationException: 力typen System.Collections.Generic.List`1 [[Transticket.Domain.Models.ApsisMailingList, Transticket .Domain,版本= 1.0.0.0,文化=中性, PublicKeyToken = null]]可以使用本軟件。 VID System.Xml.Serialization.XmlSerializationWriter.WriteTypedPrimitive(字符串 名,串NS,對象o,布爾xsiType)VID Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write1_Object(字符串 N,串NS,對象O,布爾ISNULLABLE,布爾needType)VID Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write3_ReturnObject(字符串 N,串NS,返回object O,布爾ISNULLABLE,布爾needType)
VID Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write6_GetListsResponse (Object [] p)vid Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer5.Serialize(Object objectToSerialize,XmlSerializationWriter作家)VID System.Xml.Serialization.XmlSerializer.Serialize(的XmlWriter的XmlWriter, 對象O,XmlSerializerNamespaces命名空間,字符串的encodingStyle, 字符串ID)---賤人PåstackspårningFÖRINTERNA undantag ---
VID System.Xml.Serialization.XmlSerializer.Serialize(的XmlWriter 的XmlWriter,對象o,XmlSerializerNamespaces命名空間,字符串 的encodingStyle,字符串ID)VID System.Web.Services.Protocols.SoapServerProtocol.WriteReturns(對象[] returnValues,流的OutputStream) vid System.Web.Services.Protocols.WebServiceHandler.WriteReturns(Object [] returnValues)vid System.Web.Services.Protocols.WebServiceHandler.Invoke()---賤人 PåstackspårningFÖRINTERNA undantag ---

這個例外是不是在Web服務,它在後,客戶端調用web服務返回數據。

如果我在那裏做了另一個ReturnObject,並且指定了一個類型化的對象作爲數據列表,它工作得很好。

有人有一個想法,我如何概括這個?我一直認爲List是一種對象,但看起來像一個.NET錯誤,或者我錯過了一些東西?

回答

2

XmlSerializer不包括輸出中的類型信息(與BinaryFormatter對比);因此,沒有可靠的方式反序列化object,因爲xml可以(完全字面上)任何東西。

大多數基於合同的串行器(DataContractSerializer,protobuf-net等)也是如此。

基本上:不這樣做。在網絡服務上使用object不是一件有用的事,而且這是行不通的。

相關問題