ASP.NET2.0中调用存储过程总超时....
用的存储过程中有两个参数,分别是开始日期和结束日期
如果日期范围短的就无问题,日期范围大的就老是说 "超时时间已到 "
我试过在查询分析器中是1分55秒的.
我已经在web.config中设置了这段:
<httpRuntime maxRequestLength= "409600 " executionTimeout= "43200 " />
但没用.大家帮帮忙.谢谢.
[解决办法]
public DataSet ExcutProc(string sprocName, OracleParameter[] parameters)
{
try
{
this.Open();
cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "PKG_Winner.proc_ywjd ";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Clear();
foreach (OracleParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
da = new OracleDataAdapter(cmd);
ds= new DataSet();
da.Fill(ds);
return (ds);
}
finally
{
this.Close();
}
}
OracleDataAccess oda = new OracleDataAccess();
DataSet ds;
OracleParameter[] parameters=new OracleParameter[5];
OracleParameter orderno = new OracleParameter( "orderno ", OracleType.VarChar);
orderno.Direction = System.Data.ParameterDirection.Input;
orderno.Value = this.TextBox2.Text.Trim();
parameters[0] = orderno;
OracleParameter inputdate = new OracleParameter( "inputdate ", OracleType.VarChar);
inputdate.Direction = System.Data.ParameterDirection.Input;
inputdate.Value = this.TextBox1.Text.Trim();
parameters[1] = inputdate;
OracleParameter custnob = new OracleParameter( "custnob ", OracleType.VarChar);
custnob.Direction = System.Data.ParameterDirection.Input;
custnob.Value = this.DropDownList1.Text.Trim().ToString();
parameters[2] = custnob;
OracleParameter custnoe = new OracleParameter( "custnoe ", OracleType.VarChar);
custnoe.Direction = System.Data.ParameterDirection.Input;
custnoe.Value = this.DropDownList2.Text.Trim().ToString();
parameters[3] = custnoe;
OracleParameter p = new OracleParameter( "result1 ",OracleType.Cursor);
p.Direction = System.Data.ParameterDirection.Output;
parameters[4] = p;
ds = oda.ExcutProc( "PKG_Winner.proc_ywjd ", parameters);
[解决办法]
<httpRuntime maxRequestLength= "409600 " executionTimeout= "43200 " />
如果是 存储过程 超时 是和 这个没关系的.
这个是说 发送 页面请求的 超时时间.
对于存储过程超时可以 加大sqlcommand的超时时间
SqlCommand cmd = new SqlCommand();
cmd.CommandTimeout = 60; //等待命令执行的时间(以秒为单位)。默认为 30 秒。
[解决办法]
路过UP
[解决办法]
1.
3分钟而已
___________________
LZ 喝高了哈, 处于半清醒状态吧~
默认的 30s 已经相当长了, 超过这个时间,基本是你的代码有问题,或者设计得不合理
2.
如何设置?
考虑使用 xxxDataSource 的 Selecting, Updating, Deleting, Inserting 事件, 这些时间在相应 Command 执行之前出发, 如 seleting
protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
// e.Command.CommandTimeout = 60; // 默认 30s 以足够
}
3.
延长这个时间,必须考虑到所有开发者、所有代码的影响。
除非特例,一般的程序而言,这个超时已经相当长了。你的程序应该修改存储过程或者业务逻辑设计,将同步改为异步(不是很多动作都必须立刻完成,真正的事务往往可以颠倒,例如如果你打Taxi没有代够钱,还有很多补救措施,而如果那些必须回到上车地点从头再来的做法在业务设计方面过分技术僵化),或者查询优化等等,提高100倍速度有时很容易,又是候修改业务逻辑会让用户更方便(觉得这产品不是一个计算机脑袋设计出来的,而是懂业务的人设计出来的)。
ref: http://topic.csdn.net/t/20061005/23/5064092.html
Hope helpful!