ASP.Net超时时间已到解决办法

来源:http://www.study-code.com/dotnet/aspnet/67495.htm

 

解决办法
1.在代码里面,把未关闭的连接关闭
2.扩大共享池,方法如下:
解决方法可以是修改连接池的连接生存期,因为默认值是60秒,即连接从应用程序被释放后可以在池中保存的时间。
具体操作步骤如下:
如果是ODBC的话,则可以在ODBC Data Source Administrator中手动更改,该程序位于“Start”菜单中的“Programs”->"Adminstrative Tools"(中文名:管理工具)下,或从"Control Panel"(中文名:控制面板)中打开“ODBC Data Source Administrator”(ODBC数据源管理器),再选择“Connection Pooling”(连接池)选项卡,双击驱动程序中的“SQL Server”,选择“Pool Connetions to this drive”(使用池连接该驱动程序),把下面的时间60秒改的大一点,例如120。
如果是SqlConnection的共享连接,则为ConnectionString属性Connection Lifetime数值名称指定一个值,该值默认情况下是0,表示连接永远不会从池中被自动移走。如果指定一个不同的值,那么一旦连接被返回到池中,该值将和连接的创建时间及当前时间进行比较。如果生存期超过了Connection Lifetime的值,那么连接将从池中被移走。

问题的原因是与数据库的连接没有显示关闭,而等系统自动回收是要时间的.解决的方法是改变连接池的大小.在连接字符串的后面加上以下代码:Enlist=true;Pooling=true;Max Pool Size=300;Min Pool Size=0;Connection Lifetime=300;user id=sa;packet size=1000
packet size参数取512到32767中的任一整数值

 

方法有以下两种:

1,在web.config中加上以下语句:

<system.web> 

<httpRuntime maxRequestLength="102400" executionTimeout="720" />

</system.web>  

来自MSDN解释:
     httpRuntime是配置asp.Net http运行时设置,以确定如何处理对asp.Net应用程序的请求。
     executionTimeout:表示允许执行请求的最大时间限制,单位为秒
     maxRequestLength:指示 ASP.Net 支持的最大文件上载大小。该限制可用于防止因用户将大量文件传递到该服务器而导致的拒绝服务攻击。指定的大小以 KB 为单位。默认值为 4096 KB (4 MB)。
     useFullyQualifiedRedirectUrl:表示指示客户端重定向是否是完全限定的(采用 "http://server/path" 格式,这是某些移动控件所必需的),或者指示是否代之以将相对重定向发送到客户端。如果为 True,则所有不是完全限定的重定向都将自动转换为完全限定的格式。false 是默认选项。
     minFreeThreads:表示指定允许执行新请求的自由线程的最小数目。ASP.Net 为要求附加线程来完成其处理的请求而使指定数目的线程保持自由状态。默认值为 8。
    minLocalRequestFreeThreads:表示ASP.Net 保持的允许执行新本地请求的自由线程的最小数目。该线程数目是为从本地主机传入的请求而保留的,以防某些请求在其处理期间发出对本地主机的子请求。这避免了可能的因递归重新进入 Web 服务器而导致的死锁。
    appRequestQueueLimit:表示ASP.Net 将为应用程序排队的请求的最大数目。当没有足够的自由线程来处理请求时,将对请求进行排队。当队列超出了该设置中指定的限制时,将通过“503 - 服务器太忙”错误信息拒绝传入的请求。
    enableVersionHeader:表示指定 ASP.Net 是否应输出版本标头。Microsoft Visual Studio 2005 使用该属性来确定当前使用的 ASP.Net 版本。对于生产环境,该属性不是必需的,可以禁用。

2,解决方法很简单,在代码中找到命令对象比如SqlCommand对象,给CommandTimeOut属性赋一个比较大的值。比如60秒,SqlCommand缺省超时设定是30秒。也可以将sqlcommand的timeout属性设为0.

备注:

值 0 指示无限制,在 CommandTimeout 中应避免值 0,否则会无限期地等待执行命令。

[C#]
public void CreateMySqlCommand()
{
   SqlCommand myCommand = new SqlCommand();
   myCommand.CommandTimeout = 15;
   myCommand.CommandType = CommandType.Text;
}

see as:http://msdn.microsoft.com/library/CHS/cpref/html/frlrfsystemdatasqlclientsqlcommandclasscommandtimeouttopic.asp?frame=true
   
SqlDataAdapter   da=   new   SqlDataAdapter();  
da.SelectCommand.CommandTimeout   = 60; 

posted @ 2008-08-13 14:22  KK in cnblog  阅读(4524)  评论(0编辑  收藏  举报