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. Oracle Linux 5.7安装VMware Tools的问题

    案例环境介绍:     虚拟机的版本:VMware® Workstation 8.0.3 build-703057    操作系统版本:Oracle Linux Server release 5.7 ...

  2. Hive基本语法操练

    建表规则如下: CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment ...

  3. Spark官方文档 - 中文翻译

    Spark官方文档 - 中文翻译 Spark版本:1.6.0 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 引入Spark(Linki ...

  4. 烂泥:Postfix邮件服务器搭建之准备工作

    说实话,Postfix邮件服务器的搭建是一件很麻烦的事情,需要各种软件之间的配置和调试.在写这篇文章之前,我也是搭建测试了不下于10次才算把整个流程给走通,今天刚好有时间把整个搭建过程记录下来. 在正 ...

  5. 设置DIV可编辑

    <div id="move" contentEditable="true">可编辑</div> 设置contentEditable属性可 ...

  6. 利用httpd对tomcat进行负载均衡配置

    实验系统:CentOS 6.6_x86_64 实验前提:提前准备好编译环境,防火墙和selinux都关闭 实验说明:本实验共有2台主机,IP分配如拓扑 实验软件:jdk-8u60-linux-x64 ...

  7. Nginx负载均衡配置说明

    WEB服务做负载均衡的方法有很多种,但使用Nginx做负载均衡部署毫无疑问是非常高效也是非常流行的一种. 本人大多数做.NET开发,但部署负载却一直用Nginx,对其他的负载方式研究不多,只测试过一次 ...

  8. Sqlserver游标复习

    经常写存储过程,但今天在游标使用过程中还是疏忽了一些事情,执行过程中一直执行不下去,后来直接sqlserver挂了,教训啊! 代码虽简单,望铭记: Create PROCEDURE [dbo].[te ...

  9. Neutron 理解 (2): 使用 Open vSwitch + VLAN 组网 [Netruon Open vSwitch + VLAN Virutal Network]

    学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  10. [转]MVC过滤器

    本文转自:http://www.cnblogs.com/HopeGi/p/3342083.html APS.NET MVC中(以下简称“MVC”)的每一个请求,都会分配给相应的控制器和对应的行为方法去 ...