现在做一个项目,终端是APP,获取数据采用的是WebService,但是,终端调用接口很不稳定,经常出现错误。服务已经发布到IIS上,在电脑上调试又没有问题,也可以正常的返回数据。终端调用时,就会出现错误。
以下是错误代码:
Column 'ID' does not belong to table .
这个ID是在查询的语句中,而且,该查询语句很简单。
服务器带宽2M,双线,阿里云服务器。使用的是.NET FrameWork4.0
请问,引起这个错误的原因可能是哪些啊!
估计在 DataTable 初始化列名上,时有时没有
好的,也有可能在序列化时出了异常,我在序列化的地方捕捉一下。
看到这样的提问,就想说一声,您好好的业务经理不做,为啥非要来抢程序员的饭碗呢?
访问方式不一样,我也不知道怎么会出这个错误!麻烦你帮忙解惑一下吧!
应该是请求不一样~
终端部分是通过POST请求获取的,我不知道是不是终端那边调试的结果造成的,而且,这样的错误经常出现,就拿这个接口说,能正常返回数据的几率也就在60%左右!一般出现这样的问题,是什么原因造成的呢?我在网上找了好多这样的问题,都没法解决。
@有机物: 在服务端记录一下请求日志,拿出来对比一下。。。
@幻天芒:记录过,参数什么都的都正常。
@有机物: http://forums.asp.net/t/975548.aspx?ERROR+Column+ID+does+not+belong+to+table+
@幻天芒: 我的SQL语句是这样的:select ID,Name from tb
然后,该条SQL语句我返回的是一个DataTable,我直接将该DataTable序列化成JSON格式,序列化是调用FrameWork下面的程序集,没有问题。而且,针对这个服务,我自己创建一个WINFORM程序跑了一上午都没有问题,但是,终端(IOS)那边返回就会出现问题。
@有机物: 把报错的代码贴出来吧。这实在是不好判断。
@幻天芒:
public static string DataTableConvertToJson(DataTable dt)
{
string Json = "";
ArrayList arraylist = new ArrayList();
foreach (DataRow dataRow in dt.Rows)
{
Dictionary<string, object> dictionary = new Dictionary<string, object>(); //实例化一个参数集合
foreach (DataColumn dataColumn in dt.Columns)
{
dictionary.Add(dataColumn.ColumnName, dataRow[dataColumn.ColumnName].ToString());
}
arraylist.Add(dictionary); //ArrayList集合中添加键值
}
System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer();
Json = js.Serialize(arraylist);
return Json;
}
这个是序列化的方法。
@有机物: 你的 DateTable dt 咋么来的
@Yu:
public void GetList(out bool IsSuccess,out string Json)
{
IsSuccess = false;
Json = "NULL";
try
{
string sql = string.Format("select ImagesID,ImagesPage,ImagesType,PagesID from {0} where Switch=1", Tname);
DataTable dt = DllBizBase.Get<SqlDao>().GetList(sql);//这个地方封装的是数据访问。直接返回 DataTable
//以上的SQL语句查询是可以获取数据。
if (dt.Rows.Count > 0)//这个地方判断了DT是否为空
{
foreach (DataRow item in dt.Rows)
{
item["ImagesPage"] = Obj_RedConfig.Get_AppIndexRollImg() + item["ImagesPage"].ToString();
}
IsSuccess = true;
Json = Obj_ConvertToJson.DataTableConvertToJson(dt);
}
}
catch (Exception ex)//异常捕捉,终端POST请求时,就可能出现错误!
{
BllSys_ErrorMessage.Add("BllApp_HomeAd", "获取APP滚动图片:WSAhomeAd.asmx", "GetList", ex.Message);
}
}
@有机物: 你的sql 没看到 ID 这个字段
@Yu: 这个只是一个实例,异常捕捉时,是查询出来的“ImagesID”,最初的问题提出的ID是其他的表。
@有机物: 不太容易看的出来,我想的是既然你是wcf,那你可以模拟客户端的方式去请求一下。
Column 'ID' does not belong to table . 错误已经很明显了嘛。
顶