2011-10-06 92 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不是一件有用的事,而且这是行不通的。

相关问题