首页 > 运营 > 建站经验 > 正文

时间已到在操作完成之前超时时间已过或服务器

2019-10-29 20:15:53
字体:
来源:转载
供稿:网友
Timeout 时间已到。在操作完成之前超时时间已过或服务器未响应。 说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 
异常详细信息: System.Data.SqlClient.SqlException: Timeout 时间已到。在操作完成之前超时时间已过或服务器未响应。
源错误: 
执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。 
堆栈跟踪: 
[SqlException (0x80131904): Timeout 时间已到。在操作完成之前超时时间已过或服务器未响应。]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +2030802
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +5009584
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() +234
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2275
System.Data.SqlClient.SqlDataReader.SetMetaData(_SqlMetaDataSet metaData, Boolean moreInfo) +128
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +1810
System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +33
System.Data.SqlClient.SqlDataReader.get_MetaData() +86
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +311
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +987
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +162
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +32
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +141
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +12
System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) +10
System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +144
System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior) +166
System.Data.Common.DbDataAdapter.Fill(DataTable dataTable) +115
DAL.DataAccess.Query(String sql) in E:/V2WAP/NesSales/NesSales/SourceCode/Wap/DAL/Class1.cs:38
BUL.Bussiness.SeachProductListByDate(DateTime date, String userid, String selectid) in E:/V2WAP/NesSales/NesSales/SourceCode/Wap/BUL/Class1.cs:280
Login1.Form1_Activate(Object sender, EventArgs e) +281
System.Web.UI.MobileControls.Form.OnActivate(EventArgs e) +118
System.Web.UI.MobileControls.MobilePage.set_ActiveForm(Form value) +128
Login1.List2_ItemCommand(Object sender, ListCommandEventArgs e) +77
System.Web.UI.MobileControls.List.OnItemCommand(ListCommandEventArgs e) +115
System.Web.UI.MobileControls.List.RaisePostBackEvent(String eventArgument) +186
System.Web.UI.MobileControls.List.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +4
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.MobileControls.MobilePage.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +79
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +176
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563

解决方案:

方法有以下三种:

1.原因应该在数据访问有问题,可以把连接时间设置长些,在数据库连接字符串,加上Connect Timeout=18000,单位毫秒

 

2,在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 版本。对于生产环境,该属性不是必需的,可以禁用。

3,解决方法很简单,在代码中找到命令对象比如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 frame=true
    
SqlDataAdapter   da=   new   SqlDataAdapter();   
da.SelectCommand.CommandTimeout   = 60;

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表