我以为Object是一个未知类型的对象?不在XmlSerializationWriter中

时间:2011-10-06 12:32:51

标签: c# .net xml-serialization webservice-client

我有一个Web服务,它总是返回一个ReturnObject,它是我写的类:

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

当我在Data中返回单个对象(如int或string等)时,这是正常的但当我想返回一个类型化对象列表时,运行Web服务的客户端作为WebReference获得此异常:

  

System.Web.Services.Protocols.SoapException:服务器无法处理请求。   ---> System.InvalidOperationException:生成XML文档时出错    ---> System.InvalidOperationException:   力typen   System.Collections.Generic.List`1 [Transticket.Domain.Models.ApsisMailingList,   Transticket.Domain,Version = 1.0.0.0,Culture = neutral,   PublicKeyToken = null]] kaninteanvändasidenhärkontexten。 VID   System.Xml.Serialization.XmlSerializationWriter.WriteTypedPrimitive(字符串   name,String ns,Object o,Boolean xsiType)vid   Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write1_Object(字符串   n,String ns,Object o,Boolean isNullable,Boolean needType)vid   Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write3_ReturnObject(字符串   n,String ns,ReturnObject o,Boolean isNullable,Boolean needType)
  VID   Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write6_GetListsResponse(对象[]   p)vid   Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer5.Serialize(对象   objectToSerialize,XmlSerializationWriter writer)vid   System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter,   Object o,XmlSerializerNamespaces名称空间,String encodingStyle,   String id)---Slutpåstackspårningförinternaundantag ---
  vid System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter   xmlWriter,Object o,XmlSerializerNamespaces名称空间,String   encodingStyle,String id)vid   System.Web.Services.Protocols.SoapServerProtocol.WriteReturns(对象[]   returnValues,Stream outputStream)vid   System.Web.Services.Protocols.WebServiceHandler.WriteReturns(对象[]   returnValues)vid   System.Web.Services.Protocols.WebServiceHandler.Invoke()--- Slut   påstackspårningförinternaundantag ---

此异常不在Web服务中,它是在返回数据后客户端调用webservice。

如果我在那里做另一个ReturnObject并且我将类型化对象列表指定为数据,那么它运行良好。

有人知道我如何概括这一点?我一直认为List是一种Object,但看起来像一个.NET bug,或者我错过了什么?

1 个答案:

答案 0 :(得分:2)

XmlSerializer在输出中不包含类型信息(与BinaryFormatter对比);因此,没有强大的反序列化方法object,因为xml可能(非常字面)任何东西。

大多数基于合同的序列化程序(DataContractSerializer,protobuf-net等)都是如此。

基本上:不要那样做。 object在Web服务上使用并不是一件有用的事情,而且无法正常工作。