@@@送分快来抢: 在vs2005中建webservice,把datatable作为参数和返回值没问题,但其他程序调用webservice时有问题
凡是把datatable作为返回值的webservice方法中,都把返回值类型都改了,不是datatable
如何解决此问题?

解决方案 »

  1.   

    修改后的返回值类型不能转化为datatable,why?
      

  2.   

    你可以使用重载的方式,定义多一个函数。
    比如你以前的函数是:public DataTable f(){}你可以加://代码随便写
    public XmlDocument f()
    {
       DataSet ds = new DataSet ();
       ds.Tables.add(f());
       ds.WriteXml("aa.xml");
       return XmlDocument.Load("aa.xml");
    }这样的话,没有DataTable的人就出来到XML。XML总没有问题吧,
    再不行,返回数组!
      

  3.   

    返回用XML吧,DATATABLE又不是所有程序都有的结构
      

  4.   

    建议以XML格式转化成byte[]字节流作为返回值格式因为DataTable并非所有语言中都存在
      

  5.   

    to 但其他程序调用webservice时有问题只能是.net程序才能操作以.net的DataTable为参数或者返回值的方法。
      

  6.   

    thanks all!
    to mmens(快乐中前行!) :如何通过代理来调用?
      

  7.   

    返回类型修改为XML,这样才有兼容性
      

  8.   

    你webservice返回的datatable是否强类型datatable?是的话,客户端因为没有这个强类型datatable的元数据,所以无法反序列化解决方法:1)DataTable.WriteXml() 并且传送 XML 字符串;2) new DataTable.Merge(stronglyTypedDataTable),然后返回这个“generic-typed datatable”参看我在 http://community.csdn.net/Expert/topic/4882/4882825.xml?temp=.105755 的回复的后半部分
      

  9.   

    我也碰到过这个问题,这里是解决方法:
    http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=154939&SiteID=1
    我测试过,可以用的。
    原理:http://www.bristowe.com/blog/CommentView.aspx?guid=8d22250e-5f9b-444f-b7d6-f11ced23ee49