序列化问题解决

来源:互联网 发布:金山网络2016校园招聘 编辑:程序博客网 时间:2024/05/17 05:28

System.InvalidOperationException: 生成 XML 文档时出错。 ---> System.InvalidOperationException: System.Data.Linq.Binary 无法序列化,因为它没有无参数的构造函数。 在 System.Xml.Serialization.TypeDesc.CheckSupported() 在 System.Xml.Serialization.TypeScope.GetTypeDesc(Type type, MemberInfo source, Boolean directReference, Boolean throwOnError) 在 System.Xml.Serialization.ModelScope.GetTypeModel(Type type, Boolean directReference) 在 System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(Type type, XmlRootAttribute root, String defaultNamespace) 在 System.Xml.Serialization.XmlSerializerFactory.CreateSerializer(Type type, XmlAttributeOverrides overrides, Type[] extraTypes, XmlRootAttribute root, String defaultNamespace, String location, Evidence evidence) 在 System.Xml.Serialization.XmlSerializerFactory.CreateSerializer(Type type, XmlRootAttribute root) 在 System.Data.Common.ObjectStorage.GetXmlSerializer(Type type, XmlRootAttribute attribute) 在 System.Data.Common.ObjectStorage.ConvertObjectToXml(Object value, XmlWriter xmlWriter, XmlRootAttribute xmlAttrib) 在 System.Data.XmlDataTreeWriter.XmlDataRowWriter(DataRow row, String encodedTableName) 在 System.Data.XmlDataTreeWriter.SaveDiffgramData(XmlWriter xw, Hashtable rowsOrder) 在 System.Data.NewDiffgramGen.Save(XmlWriter xmlw, DataTable table) 在 System.Data.DataSet.WriteXml(XmlWriter writer, XmlWriteMode mode) 在 System.Data.DataSet.System.Xml.Serialization.IXmlSerializable.WriteXml(XmlWriter writer) 在 System.Xml.Serialization.XmlSerializationWriter.WriteSerializable(IXmlSerializable serializable, String name, String ns, Boolean isNullable, Boolean wrapped) 在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write2_DataSet(Object o) 在 Microsoft.Xml.Serialization.GeneratedAssembly.DataSetSerializer.Serialize(Object objectToSerialize, XmlSerializationWriter writer) 在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id) --- 内部异常堆栈跟踪的结尾 --- 在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id) 在 System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter, Object o, XmlSerializerNamespaces namespaces) 在 System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter, Object o) 在 System.Web.Services.Protocols.XmlReturnWriter.Write(HttpResponse response, Stream outputStream, Object returnValue) 在 System.Web.Services.Protocols.HttpServerProtocol.WriteReturns(Object[] returnValues, Stream outputStream) 在 System.Web.Services.Protocols.WebServiceHandler.WriteReturns(Object[] returnValues) 在 System.Web.Services.Protocols.WebServiceHandler.Invoke()

这个问题一直很困扰我,因为这个服务和其他服务一样,返回的类型也是DataSet类型的值,其他服务都能正常运行,为什么这个服务的序列化会出问题呢?真是百思不得其解。 昨天终于下定决心解决这个疑难杂症。把这个服务从头跟到尾,一步一步跟踪。可是没有报错的地方啊?加上try catch也没有什么异常?问题到底出在哪里呢?最后猛然想起是不是TimeStamp这列的问题呢?我的服务返回的是DataSet类型,但是在返回之前有调用一个吧list转化为DataSet的方法,在这个方法里会从list中的每行每列里一一取值放入Dataset的table的列里。于是我把Datastamp这列去掉,只把其他列放入table中,终于服务能够正常返回结果,序列化的问题不再出现.问题终于解决了。

原创粉丝点击