耗时web请求导致timeout出错。

refs:

https://our.umbraco.org/projects/starter-kits/ublogsy/ublogsy-bugs/30213-Request-Time-out-,-when-installing-ublogsy-Latest-Release-2100


1)web js ajax请求一个数据库存储过程,该过程比较耗时。在vs中调试时一切正常,而发布后会导致如下异常。

信息:System.Threading.ThreadAbortException: Thread was being aborted.
   在 SNIReadSyncOverAsync(SNI_ConnWrapper* , SNI_Packet** , Int32 )
   在 SNINativeMethodWrapper.SNIReadSyncOverAsync(SafeHandle pConn, IntPtr& packet, Int32 timeout)
   在 System.Data.SqlClient.TdsParserStateObject.ReadSniSyncOverAsync()
   在 System.Data.SqlClient.TdsParserStateObject.TryReadNetworkPacket()
   在 System.Data.SqlClient.TdsParserStateObject.TryPrepareBuffer()
   在 System.Data.SqlClient.TdsParserStateObject.TryReadByte(Byte& value)
   在 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   在 System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   在 System.Data.SqlClient.SqlDataReader.get_MetaData()
   在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)
   在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   在 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   在 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable)
   在 DbHelperSQL.RunProcedure(String storedProcName, IDataParameter[] parameters, String tableName, Int32 Times) 位置 D:\wu\Code\CannyIot\DTrms.DBS\DbHelperSQL.cs:行号 942
   在 DTrms.DAL.by_etor_tickets_fault.GetEtorScoreInMonth(by_user m, Int32 pageIndex, Int32 pageSize, String orderby, String strWhere)
   在 DTrms.BLL.by_etor_tickets_fault.GetEtorScoreInMonth(by_user m, Int32 pageIndex, Int32 pageSize, String orderby, String strWhere)
   在 DTrms.UI.services.etor.get_etor_faultmonthlyreport() 

solution:

有些说法是修改iis的thread pool回收时间,测试下来感觉不对,但有告知应该查询同一时刻win系统应用程序事件,发现是http请求超时,和文首的refs中的连接中的描述一致,故修改 web.config 如下:

 

<httpRuntime 
    maxRequestLength="1048576"
    executionTimeout="3600"
  />


解决。


扫描二维码关注公众号,回复: 1043376 查看本文章

猜你喜欢

转载自blog.csdn.net/henry_wu001/article/details/79627502