在.Net Aspx页面中添加命令超时

时间:2016-03-30 19:35:45

标签: c# asp.net

我有.aspx页面,它只是使用SQL查询和网格来显示页面中的结果。我没有代码,它只是aspx页面。 如何在aspx页面或web.config中添加命令超时?在web.config中我知道我可以在Connection Timeout = 1000中添加连接字符串中的连接超时,但是如何添加命令超时以便在选择下拉参数以打开页面时不会收到Timeout Expired消息。看起来我的查询需要很长时间才能运行,我需要增加命令超时。

我收到超时消息:

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

  

超时已过期。完成之前已经过了超时时间   操作或服务器没有响应。

     

描述:执行期间发生了未处理的异常   当前的网络请求。请查看堆栈跟踪了解更多信息   有关错误的信息以及它在代码中的起源。

     

异常详细信息:System.Data.SqlClient.SqlException:Timeout   过期。在完成之前经过了超时时间   操作或服务器没有响应。

     

[SqlException(0x80131904):超时已过期。超时期限   在完成操作之前经过或服务器没有经过   响应。]
  System.Data.SqlClient.SqlConnection.OnError(SqlException异常,   Boolean breakConnection)+212
  System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject   stateObj)+245 System.Data.SqlClient.TdsParser.Run(RunBehavior)   runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,   BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject   stateObj)+1099
  System.Data.SqlClient.SqlDataReader.ConsumeMetaData()+58
  System.Data.SqlClient.SqlDataReader.get_MetaData()+112
  System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,   RunBehavior runBehavior,String resetOptionsString)+6319508
  System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(的CommandBehavior   cmdBehavior,RunBehavior runBehavior,Boolean returnStream,Boolean   async)+6320577
  System.Data.SqlClient.SqlCommand.RunExecuteReader(的CommandBehavior   cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String   方法,DbAsyncResult结果)+424
  System.Data.SqlClient.SqlCommand.RunExecuteReader(的CommandBehavior   cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String   方法)+28
  System.Data.SqlClient.SqlCommand.ExecuteReader(的CommandBehavior   行为,字符串方法)+211
  System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(的CommandBehavior   行为)+19
  System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(的CommandBehavior   行为)+19 System.Data.Common.DbDataAdapter.FillInternal(DataSet   dataset,DataTable [] datatables,Int32 startRecord,Int32 maxRecords,   String srcTable,IDbCommand命令,CommandBehavior行为)+221
  System.Data.Common.DbDataAdapter.Fill(DataSet dataSet,Int32   startRecord,Int32 maxRecords,String srcTable,IDbCommand命令,   CommandBehavior行为)+573
  System.Data.Common.DbDataAdapter.Fill(DataSet dataSet,String   srcTable)+161
  System.Web.UI.WebControls.SqlDataSourceView.ExecuteSelect(DataSourceSelectArguments   参数)+2803174
  System.Web.UI.DataSourceView.Select(DataSourceSelectArguments   参数,DataSourceViewSelectCallback回调)+27
  System.Web.UI.WebControls.DataBoundControl.PerformSelect()+261
  System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound()+82
  System.Web.UI.WebControls.GridView.OnPreRender(EventArgs e)+46
  System.Web.UI.Control.PreRenderRecursiveInternal()+ 108 8   System.Web.UI.Control.PreRenderRecursiveInternal()+224
  System.Web.UI.Control.PreRenderRecursiveInternal()+224
  System.Web.UI.Page.ProcessRequestMain(布尔   includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)   3394

1 个答案:

答案 0 :(得分:0)

您可以在Web.config中增加executionTimeout:

<configuration>
    <system.web>
        <httpRuntime executionTimeout="600" ... />
    </system.web>
</configuration>

该值以秒表示。

<强>更新

根据您的异常消息,一种解决方案是增加SQLCommand对象的超时:

SqlCommand command = new SqlCommand(queryString, connection);
command.CommandTimeout = 600;

此处给出了针对类似问题的其他建议:Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. The statement has been terminated