问题描述:
环境:iis + sqlserver;用c#开发的web程序;大部分功能都是查询功能,而且查询语句都是写的存储过程
问题:在实际运行过程中,过一天左右就会出现连接超时的错误;经过测试发现,当使用一个用户的时候
基本上没有问题,当使用多个用户进行测试的时候,在大约100次迭代内会出现连接超时,然后所有执行
存储过程的功能都出现连接超时的错误,而不使用存储过程的功能都可以照常使用。
执行存储过程的语法大致如下:DataSet ds=new DataSet();
SqlDataAdapter da=new SqlDataAdapter("up_procedure 'p1','p2'",conn);
da.Fill(ds,"Table");然后把ds与datagrid绑定进行显示
环境:iis + sqlserver;用c#开发的web程序;大部分功能都是查询功能,而且查询语句都是写的存储过程
问题:在实际运行过程中,过一天左右就会出现连接超时的错误;经过测试发现,当使用一个用户的时候
基本上没有问题,当使用多个用户进行测试的时候,在大约100次迭代内会出现连接超时,然后所有执行
存储过程的功能都出现连接超时的错误,而不使用存储过程的功能都可以照常使用。
执行存储过程的语法大致如下:DataSet ds=new DataSet();
SqlDataAdapter da=new SqlDataAdapter("up_procedure 'p1','p2'",conn);
da.Fill(ds,"Table");然后把ds与datagrid绑定进行显示
解决方案 »
- A为n行n列二维数组,如何删除第i行第j列,使A变为n-1行n-1列的二维数组
- char 类型的数组如何转换成字符串呢
- [问]求一个时间秒数的算法
- C#处理Excel问题(插入行),急,在线等!
- NetworkStream 文件短短续传大文件出错,忘高手指点
- 在做下载功能时,怎么用程序制作防盗链????急。。
- DataSet 与 DataReader 的区别!
- 数据行版本(DataRowVersion)枚举值的问题?
- 求助:windows service的问题?
- (百分百)Web上的DataGrid如何做到不用点击选择按钮也可以选择记录
- 怎样将DataSet中的一个表的内容复制到另外一个表中
- 关于teechart作图表的问题
另外在出现这种情况的时候对CPU和内存也做了检查,发现并没有异常。
存储过程比较复杂点,我今天也仔细检查检查,看看有没有问题。当出现这种情况的时候,数据库本身没有一点问题,依然可以执行任何操作。
CommandTimeout 值加大或干脆设置为0
不过找到具体问题是解决问题的关键
--------------------------------------------------------------------------------请求已超时。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Web.HttpException: 请求已超时。源错误: 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。 堆栈跟踪:
[HttpException (0x80004005): 请求已超时。]
{
// SqlCommand cmd=new SqlCommand("up_sale_province_cust '"+user_id+"'",db.GetFixCon(1));
// cmd.CommandTimeout=600;
// SqlDataAdapter da=new SqlDataAdapter(cmd);
// DataTable dt=new DataTable();
// da.Fill(dt); db.GetFixCon(1); DataTable dt=db.ExecSp("up_sale_province_cust",new object[1]{user_id}).Tables[0];
db.Close(); Session["source_pro_all"]=dt;
//合计行
if(dt.Rows.Count>0)
{
decimal sale=0;
decimal arr=0;
sale=Convert.ToDecimal(dt.Compute("sum(sale)","sale not is null"));
arr=Convert.ToDecimal(dt.Compute("sum(arr)","arr not is null"));
this.Td10.InnerText=sale.ToString("C");
this.Td11.InnerText=arr.ToString("C");
}
}