http://blog.csdn.net/wxnjob/article/details/8638420

webservice返回datatable时报序列化错误

以下三种方案的实质应该都是序列化的,有一位大神说过“跨进程的不序列化应该去面壁!”O(∩_∩)O哈哈哈~

解决方案一:返回dataset

WebService中的方法代码如下:
 
    [WebMethod]
    public DataSet GetDataSet()
    {
        DataTable dt=new DataTable("mytable");
        DataColumn dc=new DataColumn("id",typeof(string));
        dt.Columns.Add(dc);
        DataRow dr=dt.NewRow();
        dr["id"]="1111111";
        dt.Rows.Add(dr);
        DataSet ds=new DataSet();
        ds.Tables.Add(dt);
        return ds;
    }
 
 
 
在调用客户端直接使用DataSet
 
        DataSet ds = db.GetDataSet();//db是服务代理类实例
        GridView1.DataSource = ds.Tables[0];
        GridView1.DataBind();

解决方案二:给返回的datatable命名

webservice文件中

[WebMethod]
         public DataTable dt()
         {
             DataTable dt = new DataTable("default");
             dt.Columns.Add("id");
             dt.Columns.Add("name");
             for (int i = 0; i < 10; i++)
             {
                 DataRow dr = dt.NewRow();
                 dr["id"] = i.ToString();
                 dr["name"] = "name" + i.ToString();
                 dt.Rows.Add(dr);
             }
             return dt;
         }

调用页面中

WebService1.WebService1 service = new WebService1.WebService1();
             DataTable dt = service.dt();
             gvUser.DataSource = dt;
             gvUser.DataBind();

最关键的是在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

WebService返回DataTable的更多相关文章

  1. WebService返回DataTable问题

    今天做项目时,想在WebService中返回DataTable,在单位没成功,看网上有人说datable在.net1.1中是没有序列化的,不能直接在webservice中返回,可以返回dataset. ...

  2. 服务器发布WebService返回DataTable

    初始化Datatable时,需要为Datatable命名.否则在客户端使用时,会报“datatable不能序列化...”导致表格无法从服务器端读取到. 例如: 服务器端: DataTable dt = ...

  3. 【转】java 访问.net webservice返回的数据集

    转自[转的也是转的][http://blog.csdn.net/fox123871/article/details/8637839] 1. 概述 很多正在开发或者打算开发XML Web Service ...

  4. IBatis.Net使用总结(二)-- IBatis返回DataTable/DataSet(网上例子的集合)

    IBatis返回DataTable,DataSet ibatis.net QueryForDataTable 完整的为ibatis.net 引入datatable支持要改动很多地方,所以描述的是最小化 ...

  5. 分析案例:应用服务无响应,任务管理器中发现大量w3wp僵尸进程----等待异构系统WebService返回值

    问题描述:       某二次开发的项目反馈,不定期出现应用服务器无响应的情况,登录服务器发现任务管理器中有大量的w3wp僵尸进程. 分析过程: 针对同一进程每隔15秒抓取dump,连续抓取3个,对比 ...

  6. LINQ查询返回DataTable类型

    个人感觉Linq实用灵活性很大,参考一篇大牛的文章LINQ查询返回DataTable类型 http://xuzhihong1987.blog.163.com/blog/static/267315872 ...

  7. 在DataTable中执行DataTable.Select("条件")返回DataTable;

    转:http://blog.csdn.net/hcf_force/article/details/7779062 1.在DataTable中执行DataTable.Select("条件&qu ...

  8. iBatis.Net实现返回DataTable和DataSet对象

    如题.要返回一个ADO.NET对象好像没有使用ORM的必要,而且从编程的角度看这样的实现一点也不OO,但是实际的开发场景中还是会碰到这种需求的.下面我就借鉴前人的经验,结合实际的示例,再总结一下.如果 ...

  9. JQuery请求WebService返回数据的几种处理方式

    打开自己的博客仔细浏览了一番,发现已经好久没有写博客了,由于最近一直比较忙碌懈怠了好多.默默反省三分钟.......言归正传,现在就对最近在学习webservice的过程中遇到的几种类型的问题中我的理 ...

随机推荐

  1. C#实现在图片上斜着写字

    最近公司要搞微信活动页面,要实现图片上可以写自己名字的功能,于是就查了一下怎么实现,下面贴一下代码备忘,希望大家也能用到: 我是在控制台应用程序里进行试验的. using (Image bitmap ...

  2. javascript - 封装原生js实现ajax

    1 /* * ajax方法 */ var Ajax = function() { var that = this; //创建异步请求对象方法 that.createXHR = function() { ...

  3. MYSQL介绍安装及一些问题解决

    一.简介 MySQL是最流行的开放源码SQL数据库管理系统,它是由MySQL AB公司开发.发布并支持的.有以下特点: MySQL是一种数据库管理系统. MySQL是一种关联数据库管理系统. MySQ ...

  4. python MySQLdb 对mysql基本操作方法

    #!/usr/bin/env python # -*- coding:utf-8 -*- import MySQLdb conn = MySQLdb.connect(host=',db='host') ...

  5. 手动处理datanode磁盘间使用不均的问题

    http://wiki.apache.org/hadoop/FAQ#On_an_individual_data_node.2C_how_do_you_balance_the_blocks_on_the ...

  6. 架构实例之SpringTest

    架构实例之SpringTest 1.开发工具和开发环境       开发工具: MyEclipse10,JDK1.6.0_13(32位),Tomcat7.0(32位),mysql5.7.13 开发环境 ...

  7. 高阶Laplace曲面形变算法(Polyharmonic Deformation)

    数学上曲面的连续光滑形变可以通过最小化能量函数来建模得到,其中能量函数用来调节曲面的拉伸或弯曲程度,那么能量函数最小化同时满足所有边界条件的最优解就是待求曲面. 能量函数通常是二次函数形式: 其中S* ...

  8. UVA - 11987 Almost Union-Find[并查集 删除]

    UVA - 11987 Almost Union-Find I hope you know the beautiful Union-Find structure. In this problem, y ...

  9. Vijos1404遭遇战[最短路建模]

    背景 你知道吗,SQ Class的人都很喜欢打CS.(不知道CS是什么的人不用参加这次比赛). 描述 今天,他们在打一张叫DUSTII的地图,万恶的恐怖分子要炸掉藏在A区的SQC论坛服务器!我们SQC ...

  10. Winform菜单和工具栏控件

    1.ContextMenuStrip--右键菜单 可以绑定在任何一个控件上,添加操作快捷键,并可以设置多层 每行相当于一个按钮,输入-可添加分割线 2.MenuStrip--菜单 优先级最高,一定会出 ...