调用WebService方法,报错:无法序列化 DataTable。未设置 DataTable 名称。
错误信息如下:WebService方法如下:方法一:把DataTable转成了DataSet,但是还是报如上图的错[WebMethod]publicDataSetget_...
错误信息如下:
WebService方法如下:
方法一:把DataTable转成了DataSet ,但是还是报如上图的错
[WebMethod]
public DataSet get_report_data_ds(string strName_rpt, rptInput_info pInput)
{
DataTable dt = new DataTable();
dt.TableName = "dtReport1";
Fill_Report c_Report = new Fill_Report(0);
dt = c_Report.get_report_data(strName_rpt, pInput);//该方法返回的是DataTable
DataSet ds = new DataSet("dsDefault");
ds.Tables.Add(dt);
return ds;
}
方法二:把DataTable转成了XML,调用时也报如上图的错
[WebMethod] public string get_report_data_xml(string strName_rpt, rptInput_info pInput)
{
DataTable dt = new DataTable();
dt.TableName ="dtReport";
Fill_Report c_Report = new Fill_Report(0);
dt = c_Report.get_report_data(strName_rpt, pInput);//该方法返回的是DataTable
return CDataToXml(dt);//该方法是把dt转换成XML
}
/// <summary> /// 将DataTable对象转换成XML字符
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string CDataToXml(DataTable dt)
{
……
这是调用get_report_data_xml方法报的错 展开
WebService方法如下:
方法一:把DataTable转成了DataSet ,但是还是报如上图的错
[WebMethod]
public DataSet get_report_data_ds(string strName_rpt, rptInput_info pInput)
{
DataTable dt = new DataTable();
dt.TableName = "dtReport1";
Fill_Report c_Report = new Fill_Report(0);
dt = c_Report.get_report_data(strName_rpt, pInput);//该方法返回的是DataTable
DataSet ds = new DataSet("dsDefault");
ds.Tables.Add(dt);
return ds;
}
方法二:把DataTable转成了XML,调用时也报如上图的错
[WebMethod] public string get_report_data_xml(string strName_rpt, rptInput_info pInput)
{
DataTable dt = new DataTable();
dt.TableName ="dtReport";
Fill_Report c_Report = new Fill_Report(0);
dt = c_Report.get_report_data(strName_rpt, pInput);//该方法返回的是DataTable
return CDataToXml(dt);//该方法是把dt转换成XML
}
/// <summary> /// 将DataTable对象转换成XML字符
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string CDataToXml(DataTable dt)
{
……
这是调用get_report_data_xml方法报的错 展开
5个回答
展开全部
错误已经说的很清楚了,不支持DataTable的序列化,
也就是说,WebService不能返回DataTable
然后你说返回string,还报上面的错,那不可能的,应该是你没有编译吧
也就是说,WebService不能返回DataTable
然后你说返回string,还报上面的错,那不可能的,应该是你没有编译吧
追问
我那两个方法,第一个返回的是DataSet,第二个返回的是xml字符,关于这一点,看我上面代码的返回类型就知道了,没有返回DataTable的。那个XML的方法也编译过了。
追答
你的 rptInput_info 类里是不是有DataTable的属性?
另外,你可以考虑用WCF来代替WebService
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
...你去给DataTable个TableName就行了...上面写的不是很清楚么
想序列化DataTable,这个DataTable需要有名字的。
DataSet其实就是DataTable的集合,同理。
想序列化DataTable,这个DataTable需要有名字的。
DataSet其实就是DataTable的集合,同理。
更多追问追答
追问
我上面贴的代码,已经是把DataTable和DataSet设置名字了
追答
你的名字可以后给么?你在Get方法里面已经改变这个对象了,这个你可明白?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
datatable不支持序列化,直接返回到dataset吧。
追问
方法一的返回值本来就是dataset,不是datatable。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
类DataTable 加上implements Serializable,希望对你有用~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询