我想用DataTable来返回数据,我写了一下如下的方法来测试,结果返回后面的错误[WebMethod]
public DataTable HelloWorld()
{
DataTable ResultTable = new DataTable("msgTable");
ResultTable.Columns.Add("Content",typeof(string));
ResultTable.Rows.Add(new object[]{"HelloWorld"});
return ResultTable;
}错误:
  类型 System.ComponentModel.ISite 的成员 System.ComponentModel.MarshalByValueComponent.Site 是接口,因此无法将其序列化。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NotSupportedException: 类型 System.ComponentModel.ISite 的成员 System.ComponentModel.MarshalByValueComponent.Site 是接口,因此无法将其序列化。源错误: 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  堆栈跟踪: 
[NotSupportedException: 类型 System.ComponentModel.ISite 的成员 System.ComponentModel.MarshalByValueComponent.Site 是接口,因此无法将其序列化。]
   System.Xml.Serialization.TypeScope.ImportTypeDesc(Type type, Boolean canBePrimitive, MemberInfo memberInfo)
   System.Xml.Serialization.TypeScope.GetTypeDesc(Type type, MemberInfo source, Boolean directReference)
   System.Xml.Serialization.TypeScope.GetTypeDesc(Type type, MemberInfo source)
   System.Xml.Serialization.StructModel.GetPropertyModel(PropertyInfo propertyInfo)
   System.Xml.Serialization.StructModel.GetFieldModel(MemberInfo memberInfo)
   System.Xml.Serialization.XmlReflectionImporter.ImportStructLikeMapping(StructModel model, String ns)
   System.Xml.Serialization.XmlReflectionImporter.ImportStructLikeMapping(StructModel model, String ns)
   System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel model, String ns, ImportContext context, String dataType, Boolean repeats)[InvalidOperationException: 反射类型“System.Data.DataTable”时出错。]
   System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel model, String ns, ImportContext context, String dataType, Boolean repeats)
   System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel model, String ns, ImportContext context, String dataType)
   System.Xml.Serialization.XmlReflectionImporter.ImportAccessorMapping(MemberMapping accessor, FieldModel model, XmlAttributes a, String ns, Type choiceIdentifierType)
   System.Xml.Serialization.XmlReflectionImporter.ImportMemberMapping(XmlReflectionMember xmlReflectionMember, String ns, XmlReflectionMember[] xmlReflectionMembers)
   System.Xml.Serialization.XmlReflectionImporter.ImportMembersMapping(XmlReflectionMember[] xmlReflectionMembers, String ns, Boolean hasWrapperElement
 
----------------------------------
请问如何才能返回DataTable类型。
用DataSet 倒是可以返回,但是返回DataSet这样的数据类型,jsp可以调用吗?

解决方案 »

  1.   

    建议返回DataSet,返回后再放到table中
      

  2.   

    jsp可以调用DataSet类型的.
    可以返回DataSet类型.
      

  3.   

    .net 1.1??那么需要 返回 DataSet.或者 自己定义可以 序列化 的对象集
      

  4.   

    返回DataSet,然后从DataSet中取表.DataTable不能序列化成xml.
      

  5.   

    to: cengyidao(曾一刀) 
        谢谢,我那天做没有办法就返回了DataSet 和用 DataSet 作参数的。
        现在知道可以就放心了,呵呵。to:hertcloud 
       我现在用的是1.1谢谢以上三位,我现在试着看看可不可以通过实现那个什么鬼接口来搞定,最迟明天结贴,我刚才在网上搜了,也没有什么具体的方法,都是提议用DataSet来返回。
      

  6.   

    //可以参考
    [WebMethod]
    public DataSet GetTicketsByTrainNumber(string TrainNumber)
    {
        DataSet ds=new DataSet();
        SqlDataAdapter DA=new SqlDataAdapter("Select * From Tickets Where Train_number='"+TrainNumber+"'",Conn);
                DA.Fill(ds,"Tickets");
    if(ds.Tables[0].Rows.Count>0)
      return ds;
    else
      return null;
    }