WebService返回DataTable
webservice返回datatable时报序列化错误 以下三种方案的实质应该都是序列化的,有一位大神说过“跨进程的不序列化应该去面壁!”O(∩_∩)O哈哈哈~ 解决方案一:返回dataset WebService中的方法代码如下: ? 解决方案二:给返回的datatable命名 ??? webservice文件中 ???????? [WebMethod] ??????? 调用页面中 ???????????? WebService1.WebService1 service = new WebService1.WebService1(); ?????? 最关键的是在webservice的方法中为datatable命名,否则就会报错. ? 解决方案三:服务中将DataTable的序列化成xml字符串,调用时候在反序列化成DataTable #region DataTable序列化和反序列化 ??????? /// <summary> ??????? /// DataTableToXML ??????? /// </summary> ??????? public static string ConvertDataTableToXML(DataTable dt) ??????? { ??????????? return ConvertDataTableToXML(dt,string.Empty); ??????? } ??????? public static string ConvertDataTableToXML(DataTable dt,string aaa) ??????? { ??????????? StringWriter sw = null; ??????????? try ??????????? { ??????????????? if (dt.TableName == string.Empty) ??????????????????? dt.TableName = "table1"; ??????????????? sw = new StringWriter(); ??????????????? dt.WriteXml(sw,XmlWriteMode.WriteSchema); ??????????????? return sw.ToString(); ??????????? } ??????????? catch (System.Exception ex) ??????????? { ??????????????? throw ex; ??????????? } ??????????? finally ??????????? { ??????????????? if (sw != null) ??????????????????? sw.Close(); ??????????? } ??????? } ??????? /// <summary> ??????? /// XMLToDataTable ??????? /// </summary> ??????? public static DataTable ConvertXMLToDataTable(string xmlData) ??????? { ??????????? TextReader sr = null; ??????????? try ??????????? { ??????????????? DataTable dt = new DataTable(); ??????????????? sr = new StringReader(xmlData); ??????????????? dt.ReadXml(sr); ??????????????? return dt; ??????????? } ??????????? catch (System.Exception ex) ??????????? { ??????????????? throw ex; ??????????? } ??????????? finally ??????????? { ??????????????? if (sr != null) sr.Close(); ??????????? } ??????? } ??????? #endregion (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |