public DataTable GetDataSet(string sql, params SqlParameter[] values)
{
using (SqlCommand cmd = new SqlCommand(sql, Connection))
{
DataSet ds = new DataSet(); cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddRange(values);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds.Tables[0];
}
}
这里就是调用的时候:
public DataTable GetWeekProduct(DateTime startTime, DateTime endTime)
{
string strSql = "DB.DBO.usp_WeekProductReport ";
SqlParameter[] sp = new SqlParameter[]
{
new SqlParameter("@DateFrom",startTime),
new SqlParameter("@DateTo",endTime),
};
return base.GetDataSet(strSql, sp); }我在数据库里面直接查询的话只需要2秒钟数据就出来了,数据量只有10条数据,但是在程序里面就死掉了,就是da.Fill(ds)的时候卡住了,
我是调用的一个存储过程来查询,网上说的那些设置cmd.CommandTimeout我也试过了,问题依旧,不知道有没有人遇见过。
{
using (SqlCommand cmd = new SqlCommand(sql, Connection))
{
DataSet ds = new DataSet(); cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddRange(values);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds.Tables[0];
}
}
这里就是调用的时候:
public DataTable GetWeekProduct(DateTime startTime, DateTime endTime)
{
string strSql = "DB.DBO.usp_WeekProductReport ";
SqlParameter[] sp = new SqlParameter[]
{
new SqlParameter("@DateFrom",startTime),
new SqlParameter("@DateTo",endTime),
};
return base.GetDataSet(strSql, sp); }我在数据库里面直接查询的话只需要2秒钟数据就出来了,数据量只有10条数据,但是在程序里面就死掉了,就是da.Fill(ds)的时候卡住了,
我是调用的一个存储过程来查询,网上说的那些设置cmd.CommandTimeout我也试过了,问题依旧,不知道有没有人遇见过。
string strSql = "DB.DBO.usp_WeekProductReport ";这是什么 看不懂
sql语句不对吧
存储过程稍微有点复杂,但是最后返回去的只是一张临时表:
CREATE PROCEDURE [DBO].[usp_WeekProductYieldReport3]
-- @ModelPN VARCHAR(15)=' ',
@DateFrom smalldatetime=' ',
@DateTo smalldatetime=' ' ----- 10/31/2010
ASSELECT @DateTo=DATEADD(DAY,1,@DateTo)
SELECT FORDER=1,FPN_L='52', FFLOW='AOI' INTO #FLOW
UNION
SELECT FORDER=2,FPN_L='52', FFLOW='AOI'
UNION
SELECT FORDER=3,FPN_L='50', FFLOW='TWS'
UNION
SELECT FORDER=4,FPN_L='52', FFLOW='T01'
UNION
SELECT FORDER=5,FPN_L='50', FFLOW='T01'
UNION
SELECT FORDER=6,FPN_L='52', FFLOW='T03'
UNION
SELECT FORDER=7,FPN_L='80', FFLOW='T11'
UNION
SELECT FORDER=8,FPN_L='80', FFLOW='Q01'
UNION
SELECT FORDER=9,FPN_L='80', FFLOW='Q02'
-------------------------------------------------------------------------------------
SELECT FNO=21, FMPN='80-A368-30W00',FPN='52-A368-11W00', FORDER=1 INTO #805052
UNION
SELECT FNO=22, FMPN='80-A368-30W00',FPN='52-A368-00W00', FORDER=2
UNION
SELECT FNO=23, FMPN='80-A368-30W00',FPN='52-A368-05W00', FORDER=2
UNION
SELECT FNO=24, FMPN='80-A368-30W00',FPN='50-A368-30W00', FORDER=3
UNION
SELECT FNO=25, FMPN='80-A368-30W00',FPN='52-A368-11W00', FORDER=4
UNION
SELECT FNO=26, FMPN='80-A368-30W00',FPN='50-A368-30W00', FORDER=5
UNION
SELECT FNO=27, FMPN='80-A368-30W00',FPN='52-A368-11W00', FORDER=6
UNION
SELECT FNO=28, FMPN='80-A368-30W00',FPN='80-A368-30W00', FORDER=7
UNION
SELECT FNO=29, FMPN='80-A368-30W00',FPN='80-A368-30W00', FORDER=8
UNION
SELECT FNO=30, FMPN='80-A368-30W00',FPN='80-A368-30W00', FORDER=9
--------------------------------------------------------------------------------------
SELECT FID=IDENTITY(INT,1,1), B.FMPN, B.FPN, A.FFLOW, FTOTQTY=0, FFQTY=0, A.FORDER
INTO #R FROM #FLOW A, #805052 B
WHERE A.FORDER=B.FORDER ---A.FPN_L=LEFT(B.FPN,2)
ORDER BY B.FMPN, A.FORDER, B.FNO
SELECT * INTO #MOD FROM viwModelB5 WHERE MOD_CUSTOM='CC002'
select SONO = MSO_NO, FPN=MSO_MODEL,PN80=MSO_MODEL, FPN2=MSO_MODEL, MSO=MSO_NO, IFMB = 'M' into #temp_so
from viwModsoB5, #MOD
where MSO_MODEL=MOD_NO
UNION ALL
select b.BSO_NO, BSO_BOARD,m.MSO_MODEL, '52'+SUBSTRING(BSO_BOARD,3,15), BSO_MSOFOR, 'B'
from viwBodsoB5 b, viwModsoB5 m, #MOD
where m.MSO_MODEL=MOD_NO and b.BSO_MSOFOR = m.MSO_NO
ORDER BY MSO, SONO
SELECT PN80=SPACE(13), FPN=SPACE(13), FFLOW=SPACE(5), FTOTQTY=0, FREPQTY=0 INTO #TEMPR0 WHERE 1=0
SELECT DISTINCT A.FFlow, A.FPBC, A.FMPN, B.FBC ----, SONO --
INTO #AOI0 FROM viwMPBCINFOB5 A, viwMBCINFOB5 B ----, #temp_so C
WHERE A.FFLOW='AOI' AND B.FFLOW='SMT' ----AND A.FMPN=C.FPN2 AND C.IFMB='B'
AND A.FPBC=B.FPBC AND A.FINPUTDATE>=@DATEFROM AND A.FINPUTDATE<@DateTo
SELECT BCS_MODFOR AS PN80, A.* INTO #AOI FROM #AOI0 A, VIWBCSTATUSB5 B WHERE FBC=BCS_CTSNODROP TABLE #AOI0INSERT INTO #TEMPR0
SELECT PN80,FMPN, 'AOI', COUNT(*), 0 FROM #AOI GROUP BY PN80,FMPNSELECT FBC, MAX(FMPN) AS FMPN INTO #RPN FROM #AOI GROUP BY FPBC, FBC
INSERT INTO #TEMPR0
SELECT B.PN80,'50'+SUBSTRING(C.FMPN,3,15), 'AOI', 0, COUNT(*) FROM viwMPBCINFOB5 A, #AOI B, #RPN C
WHERE A.FFLOW='SMTR' AND A.FPBC=B.FBC AND A.FPBC=C.FBC
GROUP BY B.PN80,C.FMPN
select m.PN80, M.FPN, m.IFMB, s.SOT_OPESEQ, SOT_OPEDESC, Process = o.OPE_DESC, ProcessedQty = sum(s.SOT_PQTY+s.SOT_OQTY+s.SOT_FQTY+s.SOT_SQTY),
PassedQty = sum(s.SOT_PQTY+s.SOT_OQTY)
into #temp_res
from viwSodailytotalB5 s, #temp_so m, viwOPERATIONB5 o
where s.SOT_DATE >=@DateFrom and s.SOT_DATE < @DateTo
and s.SOT_SONO = m.SONO AND SOT_OPEDESC IN ('TWS','T01', 'T03','T11','Q01','Q02')
and s.SOT_OPEDESC = o.OPE_CODE
group by m.PN80,M.FPN, m.IFMB, s.SOT_OPESEQ, SOT_OPEDESC, o.OPE_DESC
INSERT INTO #TEMPR0
select PN80, FPN, SOT_OPEDESC, ProcessedQty, PassedQty --Process
from #temp_res
order by PN80,FPN, IFMB, SOT_OPESEQSELECT PN80, FPN, FFLOW, FTOTQTY=SUM(FTOTQTY), FREPQTY=SUM(FREPQTY)
INTO #TEMPR FROM #TEMPR0
GROUP BY PN80, FPN, FFLOWUPDATE #R SET FTOTQTY=B.FTOTQTY, FFQTY=B.FREPQTY
FROM #R A, #TEMPR B
WHERE A.FMPN=B.PN80 AND A.FPN=B.FPN AND A.FFLOW=B.FFLOWUPDATE #R SET FFQTY=FTOTQTY WHERE FFLOW='AOI'---ADD 2011-02-17SELECT FMPN, MAX(FPN) AS FPN, FFLOW, SUM(FTOTQTY) AS FTOTQTY, SUM(FFQTY) AS FFQTY, FORDER
INTO #R2 FROM #R GROUP BY FMPN, FFLOW, FORDER
SELECT FID=FORDER,* into #AllInfo FROM #R2 ORDER BY FMPN,FORDERselect * from #AllInfo ORDER BY FMPN,FORDER
GO
da.Fill(ds,"这块要把临时表名称加里面");
public DataTable GetDataSet(string sql, params SqlParameter[] values)
{
using (SqlCommand cmd = new SqlCommand(sql, Connection))
{
DataSet ds = new DataSet(); cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddRange(values);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds.Tables[0];
}
}这一部分是DBHelper里面的一个方法,一直都没有写那个表名,如果现在改的话很多的地方都要改了。
SQL77:
我在SQL里面执行的话耗时1秒钟,接着就在程序里面去执行,但是就在da.Fill的时候死了
晕倒 重新写个方法 GetDataSet新名称() 专门给那个存储过程用
我另外写了一方法,将临时表名称也传进去了,但是问题依旧啊,能想到的办法都想了,我郁闷:Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
http://topic.csdn.net/u/20110822/16/91b7fccc-abb8-429f-a237-665b6428ebb1.html
可以连接到服务器的,我这个DBHelper继承了一个类,那个类里面有设置连接服务器。
public DataTable GetDataSetForWeekYield(string TalbeName,string sql, params SqlParameter[] values)
{
using (SqlCommand cmd = new SqlCommand(sql, Connection))
{
DataSet ds = new DataSet(); cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddRange(values);
SqlDataAdapter da = new SqlDataAdapter(cmd);
//da.Fill(ds, "" + TalbeName + "");
da.Fill(ds, "#AllInfo");
return ds.Tables[0];
}
}
我现在这样写,把临时表也传入进去了,但是还是到了da.Fill(ds, "#AllInfo")的时候就死掉了啊,SQL里面我这样执行:usp_WeekProductYieldReport '02/07/2012','02/09/2012' 耗时不到1秒钟,数据只有10条。
就可以改成DataTable Dt=new DataTable();
下面的填充就是:
da.Fill(Dt);
Return Dt;
你创建的DataSet里面是不是还没有数据表啊?
还可以用DataTable的Load方法LoadDataReader
SqlDataReader Dr= Cmd.ExecuteReader();
Dt.Load(Dr, LoadOption.PreserveChanges);
cnwin:你的方法为都试过了,第一种方法还是在Fill的时候就超时了,第二种方法在SqlDataReader Dr= Cmd.ExecuteReader();的时候超时。
qldsrx:我的SQL是Server2000的,怎么样可以跟踪的到?
你说用DataReader时Cmd.ExecuteReader()这时就死掉了?那就是在获取数据过程超时了。
begin
select @error_string = 'xxxx时出错!'
rollback tran
return
end
在存储过程最后(能执行到最后说明执行成功)select @error_string =‘ok'
这样在你程序里判断if (Rst=="ok")
{
//返回 查询你的表
}
else
{
throw new Exception(Rst);
}
-- @ModelPN VARCHAR(15)=' ',
@DateFrom smalldatetime=' ',
@DateTo smalldatetime=' ' ----- 10/31/2010
ASSELECT @DateTo=DATEADD(DAY,1,@DateTo)
SELECT FORDER=1,FPN_L='52', FFLOW='AOI' INTO #FLOW
UNION
SELECT FORDER=2,FPN_L='52', FFLOW='AOI'
UNION
SELECT FORDER=3,FPN_L='50', FFLOW='TWS'
UNION
SELECT FORDER=4,FPN_L='52', FFLOW='T01'
UNION
SELECT FORDER=5,FPN_L='50', FFLOW='T01'
UNION
SELECT FORDER=6,FPN_L='52', FFLOW='T03'
UNION
SELECT FORDER=7,FPN_L='80', FFLOW='T11'
UNION
SELECT FORDER=8,FPN_L='80', FFLOW='Q01'
UNION
SELECT FORDER=9,FPN_L='80', FFLOW='Q02'
-------------------------------------------------------------------------------------
SELECT FNO=21, FMPN='80-A368-30W00',FPN='52-A368-11W00', FORDER=1 INTO #805052
UNION
SELECT FNO=22, FMPN='80-A368-30W00',FPN='52-A368-00W00', FORDER=2
UNION
SELECT FNO=23, FMPN='80-A368-30W00',FPN='52-A368-05W00', FORDER=2
UNION
SELECT FNO=24, FMPN='80-A368-30W00',FPN='50-A368-30W00', FORDER=3
UNION
SELECT FNO=25, FMPN='80-A368-30W00',FPN='52-A368-11W00', FORDER=4
UNION
SELECT FNO=26, FMPN='80-A368-30W00',FPN='50-A368-30W00', FORDER=5
UNION
SELECT FNO=27, FMPN='80-A368-30W00',FPN='52-A368-11W00', FORDER=6
UNION
SELECT FNO=28, FMPN='80-A368-30W00',FPN='80-A368-30W00', FORDER=7
UNION
SELECT FNO=29, FMPN='80-A368-30W00',FPN='80-A368-30W00', FORDER=8
UNION
SELECT FNO=30, FMPN='80-A368-30W00',FPN='80-A368-30W00', FORDER=9
--------------------------------------------------------------------------------------
SELECT FID=IDENTITY(INT,1,1), B.FMPN, B.FPN, A.FFLOW, FTOTQTY=0, FFQTY=0, A.FORDER
INTO #R FROM #FLOW A, #805052 B
WHERE A.FORDER=B.FORDER ---A.FPN_L=LEFT(B.FPN,2)
ORDER BY B.FMPN, A.FORDER, B.FNO
SELECT * INTO #MOD FROM viwModelB5 WHERE MOD_CUSTOM='CC002'
select SONO = MSO_NO, FPN=MSO_MODEL,PN80=MSO_MODEL, FPN2=MSO_MODEL, MSO=MSO_NO, IFMB = 'M' into #temp_so
from viwModsoB5, #MOD
where MSO_MODEL=MOD_NO
UNION ALL
select b.BSO_NO, BSO_BOARD,m.MSO_MODEL, '52'+SUBSTRING(BSO_BOARD,3,15), BSO_MSOFOR, 'B'
from viwBodsoB5 b, viwModsoB5 m, #MOD
where m.MSO_MODEL=MOD_NO and b.BSO_MSOFOR = m.MSO_NO
ORDER BY MSO, SONO----SELECT * FROM #temp_so ORDER BY PN80
SELECT PN80=SPACE(13), FPN=SPACE(13), FFLOW=SPACE(5), FTOTQTY=0, FREPQTY=0 INTO #TEMPR0 WHERE 1=0-----AOI
SELECT DISTINCT A.FFlow, A.FPBC, A.FMPN, B.FBC ----, SONO --
INTO #AOI0 FROM viwMPBCINFOB5 A, viwMBCINFOB5 B ----, #temp_so C
WHERE A.FFLOW='AOI' AND B.FFLOW='SMT' ----AND A.FMPN=C.FPN2 AND C.IFMB='B'
AND A.FPBC=B.FPBC AND A.FINPUTDATE>=@DATEFROM AND A.FINPUTDATE<@DateTo
---- AND FMPN='52-A368-10W00'SELECT BCS_MODFOR AS PN80, A.* INTO #AOI FROM #AOI0 A, VIWBCSTATUSB5 B WHERE FBC=BCS_CTSNO
-----DELETE #AOI WHERE FBC NOT IN (SELECT BCS_CTSNO FROM #VSNO)
DROP TABLE #AOI0
/*
SELECT * FROM #AOI
WHERE PN80='80-A368-00W00'
order by FBC
RETURN
*/--1. AOI
/*SELECT * FROM viwMPBCINFOB5 A, viwMBCINFOB5 B, #temp_so C
WHERE A.FFLOW='AOI' AND B.FFLOW='SMT' AND A.FMPN=C.FPN2 AND C.IFMB='B'
AND A.FPBC=B.FPBC AND A.FINPUTDATE>=@DATEFROM AND A.FINPUTDATE<@DateTo
ORDER BY C.PN80,A.FFlow, A.FPBC, A.FMPN, B.FBC
*/
INSERT INTO #TEMPR0
SELECT PN80,FMPN, 'AOI', COUNT(*), 0 FROM #AOI GROUP BY PN80,FMPNSELECT FBC, MAX(FMPN) AS FMPN INTO #RPN FROM #AOI GROUP BY FPBC, FBC
INSERT INTO #TEMPR0
SELECT B.PN80,'50'+SUBSTRING(C.FMPN,3,15), 'AOI', 0, COUNT(*) FROM viwMPBCINFOB5 A, #AOI B, #RPN C
WHERE A.FFLOW='SMTR' AND A.FPBC=B.FBC AND A.FPBC=C.FBC
GROUP BY B.PN80,C.FMPN
--2. SMT REPAIR
/*SELECT * FROM viwMPBCINFOB5 A, #AOI B, #RPN C
WHERE A.FFLOW='SMTR' AND A.FPBC=B.FBC AND A.FPBC=C.FBC
ORDER BY B.PN80,C.FMPN
*/
select m.PN80, M.FPN, m.IFMB, s.SOT_OPESEQ, SOT_OPEDESC, Process = o.OPE_DESC, ProcessedQty = sum(s.SOT_PQTY+s.SOT_OQTY+s.SOT_FQTY+s.SOT_SQTY),
PassedQty = sum(s.SOT_PQTY+s.SOT_OQTY)
into #temp_res
from viwSodailytotalB5 s, #temp_so m, viwOPERATIONB5 o
where s.SOT_DATE >=@DateFrom and s.SOT_DATE < @DateTo
and s.SOT_SONO = m.SONO AND SOT_OPEDESC IN ('TWS','T01', 'T03','T11','Q01','Q02')
and s.SOT_OPEDESC = o.OPE_CODE
group by m.PN80,M.FPN, m.IFMB, s.SOT_OPESEQ, SOT_OPEDESC, o.OPE_DESC/*
select * from viwSodailytotalB5 s, #temp_so m, viwOPERATIONB5 o
where s.SOT_DATE >=@DateFrom and s.SOT_DATE < @DateTo
and s.SOT_SONO = m.SONO AND SOT_OPEDESC IN ('TWS','T01', 'T03','T11','Q01','Q02')
and s.SOT_OPEDESC = o.OPE_CODE
return
*/
/*
--3. VTS
select m.PN80, M.FPN, m.IFMB, s.SOT_OPESEQ, SOT_OPEDESC, Process = o.OPE_DESC, ProcessedQty = s.SOT_PQTY+s.SOT_OQTY+s.SOT_FQTY+s.SOT_SQTY,
PassedQty = s.SOT_PQTY+s.SOT_OQTY
from viwSodailytotalB5 s, #temp_so m, viwOPERATIONB5 o
where s.SOT_DATE >=@DateFrom and s.SOT_DATE < @DateTo
and s.SOT_SONO = m.SONO AND SOT_OPEDESC IN ('TWS','T01', 'T03','T11','Q01','Q02')
and s.SOT_OPEDESC = o.OPE_CODE
ORDER by m.PN80,M.FPN, m.IFMB, s.SOT_OPESEQ, SOT_OPEDESC, o.OPE_DESC
*/
----SELECT * FROM #TEMPR0
----SELECT * FROM #temp_res
----RETURNINSERT INTO #TEMPR0
select PN80, FPN, SOT_OPEDESC, ProcessedQty, PassedQty --Process
from #temp_res
order by PN80,FPN, IFMB, SOT_OPESEQSELECT PN80, FPN, FFLOW, FTOTQTY=SUM(FTOTQTY), FREPQTY=SUM(FREPQTY)
INTO #TEMPR FROM #TEMPR0
GROUP BY PN80, FPN, FFLOW----select * from #temprUPDATE #R SET FTOTQTY=B.FTOTQTY, FFQTY=B.FREPQTY
FROM #R A, #TEMPR B
WHERE A.FMPN=B.PN80 AND A.FPN=B.FPN AND A.FFLOW=B.FFLOWUPDATE #R SET FFQTY=FTOTQTY WHERE FFLOW='AOI'---ADD 2011-02-17SELECT FMPN, MAX(FPN) AS FPN, FFLOW, SUM(FTOTQTY) AS FTOTQTY, SUM(FFQTY) AS FFQTY, FORDER
INTO #R2 FROM #R GROUP BY FMPN, FFLOW, FORDER
--- ORDER BY FORDER---FID=IDENTITY(INT,1,1), --SELECT FID=FORDER,* FROM #R2 ORDER BY FMPN,FORDERSELECT FID=FORDER,* into #AllInfo FROM #R2 ORDER BY FMPN,FORDER--select * from #AllInfo ORDER BY FMPN,FORDER
delete WeekProductinsert into WeekProduct select * from #AllInfo ORDER BY FMPN,FORDERselect * from WeekProduct ORDER BY FMPN,FORDERGO
最后两句话就是将数据放到我新建的表里面去了,但是这样居然还是出现超时。
我发现跟踪的时候有这个错误,提示没有可用的连接,并自动创建一个,这是什么意思呢?
No matching connection to execute this on. Will auto-create one.
看你上面说的存储过程就是一句话(select)是可以获得数据的?是吗?那就是说用你现在的连接可以获得数据表了?连接该没问题啊。我上面的意思就是让你把执行和获取表分开来。这样如果执行过程有问题可以在应用程序中报出来。就目前情况看说明你连接没问题,Sql Server中执行也没问题。那就是程序调用有问题了。
你的时间参数有问题:转一下
StartDate.ToString()我都是这么用的,当然我是自己写的DbHelp类:我的代码如下: Db.AddInParameter("@first_date", DbType.String, StartDate.ToString());
Db.AddInParameter("@Last_date", DbType.String, EndDate.ToString());
Db.AddOutParameter("@error_string", DbType.String, "ok", 255);
Db.ExecuteNonQuery("sp_Stock_Statist", CommandType.StoredProcedure);
string Rst = Db.Parameters["@error_string"].Value.ToString();
if (Rst=="ok")
{
return TableOperator.GetDataTable<dsResult.month_statistDataTable>();
}
else
{
throw new Exception(Rst);
}
分开执行都没问题,第一步:将存储过程的数据放到一张表里面。OK第二步:查询那张有数据的表,OK
分开都是可以的,但是合在一起就不行了。
不过你描述里说的似乎是不响应了,这就真奇怪了。你描述说分开来,那就是说存储过程最后不进行Select是没有问题的,对吧?加上查询语句就有问题?这不奇怪吗?倒不如先这样分开来用吧。
因为这个存储过程在服务器A上面,但是又查询了服务器B上面的数据,我在服务器A上面建了很多的视图,这些视图都是为了去查询服务器B上面的表,
用到了LinkServer。估计就是这个情况导致很慢的,现在我把存储过程都写在服务器B上面,然后在服务器A上面直接调用,调用如下:
CREATE PROCEDURE [DBO].[usp_WeekProductYieldReport]
@DateFrom smalldatetime=' ',
@DateTo smalldatetime=' '
AS
EXEC ServerName.DataBase.DBO.usp_WeekProductYieldReport @DateFrom,@DateTo
GO这样一来查询数据就非常的快了,程序里面在Da.Fill的时候也不会出现超时了,总结一点:跨服务器访问数据的情况下,
尽量将那些复杂的业务逻辑放在同一个服务器上面执行,等到执行完成之后再在其它的服务器上面调用。感谢大家的热情帮助!
cmd.CommandTimeout = 180;
再运行,即解决,这里设置的时间的180秒,即三分钟!可根据需要设置,如果过长,也可以设置为0,当此属性设置为0时表示不限制时间。此属性值应该慎用。还需要在Web.config配置文件中设置http请求运行时限间 <system.web>
<httpRuntime maxRequestLength="102400" executionTimeout="720" />
</system.web>
这里设置的为720秒,前面的属性maxRequestLength一般用于用户上传文件限制大小!默认一般为4096 KB (4 MB)。