调用WebService方法,报错:无法序列化 DataTable。未设置 DataTable 名称。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了调用WebService方法,报错:无法序列化 DataTable。未设置 DataTable 名称。相关的知识,希望对你有一定的参考价值。
错误信息如下:
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
然后你说返回string,还报上面的错,那不可能的,应该是你没有编译吧追问
我那两个方法,第一个返回的是DataSet,第二个返回的是xml字符,关于这一点,看我上面代码的返回类型就知道了,没有返回DataTable的。那个XML的方法也编译过了。
追答你的 rptInput_info 类里是不是有DataTable的属性?
另外,你可以考虑用WCF来代替WebService
想序列化DataTable,这个DataTable需要有名字的。
DataSet其实就是DataTable的集合,同理。追问
我上面贴的代码,已经是把DataTable和DataSet设置名字了
追答你的名字可以后给么?你在Get方法里面已经改变这个对象了,这个你可明白?
追问放后面了,依旧报那个错
追答。。。。没搞错吧
来加我瞅瞅。 124033472
我找到原因了,是参数的问题,参数rptInput_info是个结构体,这个结构里有个DataTable。o(︶︿︶)o
谢谢你啦
方法一的返回值本来就是dataset,不是datatable。
参考技术D 类DataTable 加上implements Serializable,希望对你有用~ 第5个回答 2013-04-18 你没有设置table的名称axis2调用webservice教训
总结教训,axis2client调用WS接口时url不能加?wsdl,而用cxf调用时则要加上。
今天用axis2的RpcServerClient调用https的webservice接口,在设置完option参数后总是保错server response failed,而服务器肯定没问题,想尽各种办法搜资料都无法解决,最后网上看到一句话出现这个报错要么是服务不在线,要么是url错了,突然想到把url中的?wsdl试试,果然成功。收前两天cxf调用成功影响,url直接拷贝以为没问题,没想到出现这个问题浪费了几个小时调试时间。
以上是关于调用WebService方法,报错:无法序列化 DataTable。未设置 DataTable 名称。的主要内容,如果未能解决你的问题,请参考以下文章
采用WebService客户端调用WSDL/SOAP网络报错的解决办法
python用suds 调用webservice方法的时候报错。