原因分析:
一:执行命令超时;
SqlCommand命令执行超时,这时需要修改CommandTimeout的默认值(默认值为30s),即增大CommandTimeout的值。
备注:
CommandTimeout 值 0 指示无限制,在 CommandTimeout 中应避免值
0,否则会无限期地等待执行命令。
说明
Connection 对象或 Command 上的 CommandTimeout
属性,允许由于网络拥塞或服务器负载过重产生的延迟而取消 Execute 方法调用。如果在 CommandTimeout
属性中设置的时间间隔内没有完成命令执行,将产生错误,然后 ADO 将取消该命令。如果将该属性设置为零,ADO
将无限期等待直到命令执行完毕。请确保正在写入代码的提供者和数据源支持 CommandTimeout 功能。
Connection 对象的 CommandTimeout 设置不会对相同 Connection 上 Command 对象的
CommandTimeout 设置产生影响,即 Command 对象的 CommandTimeout 属性不继承 Connection
对象的 CommandTimeout 的值。
在 Connection 对象上,打开 Connection 后,CommandTimeout 属性将保持读/写。
二:web页面执行超时(如:上传批量文件)
需要修改配置文件(web.config):
下面写写httpRuntime及其属性:
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 版本。对于生产环境,该属性不是必需的,可以禁用。
三:程序中可能使用了事物处理;
在事物处理的开始与结束之间,启动了没用事务处理的过程(查询操作等),这时提示此错误。