超时时间已到。在操作完成之前超时时间已过或服务器未响应。
错误信息如 文章标题 所示。
是在做一个分页查询时出的这个错误,错误很诡异,具体步骤如下:
string strWhere = "nclassName like '" + musicName + "' or musicName like '%"+musicName+"%'";
protected void Page_Load(object sender, EventArgs e)
{
int recordCount = 0;
//传入假参数,为了取得总数量,因为总数量在页面初始化时就要赋值
this.GridView1.DataSource = MusicList_BLL.SelectDataTableByPage(_tblName, descid, _fldName, strWhere, 1,1,1, ref recordCount);
this.GridView1.DataBind();
AspNetPager1.RecordCount = recordCount;
}
//再页面载入时\点击页数时会触发这事件,
protected void AspNetPager1_PageChanged(object sender, EventArgs e)
{
int recordCount = 0;
this.GridView1.DataSource = MusicList_BLL.SelectDataTableByPage(_tblName, descid, _fldName, strWhere, 1, AspNetPager1.PageSize, AspNetPager1.CurrentPageIndex, ref recordCount);
this.GridView1.DataBind();
}
为了让问题看起来方便,我就简化了传值赋值逻辑判断这些代码,SelectDataTableByPage方法是对的,参数descid,_fldName,这些值都是没有问题。在我第一次加载这个页面,比如搜索 张学友 的时候,会正常显示PageSize条记录,但当我点击下一页或者2,3,4,5.....页时,就报出超时信息。
我设置断点跟踪了,两次走的步骤完全一样,唯一不同的就是第一次传入参数CurrentPageIndex为1,第二次为用户自己点的页面数,既然第一次正常显示了,代表传参及数据库查询都不存在问题,但为什么第二次传入CurrentPageIndex就报超时呢?当然所有参数都是正常传入。
在网上搜索了相关问题的解决办法
web.config 已经设置,跟它无关,如果有关,第一次查询也不可能成功。<httpRuntime useFullyQualifiedRedirectUrl="true" maxRequestLength="1024000" executionTimeout="900" />
设置sqlcommond的timeout。这个也设置了,没效果(实质跟web.config配置效果一样)
设置sqlconnection 的 Connect Timeout。这个也设置了,依旧报错。
有的人说查询复杂,给相应字段设置索引,这个也设置了,没效果。
请问大侠们这大概什么原因啊, 实在是想不明白。