Как предотвратить исключение приложения с истекшим временем ожидания?

#c# #.net #timeoutexception

#c# #.net #исключение timeoutexception

Вопрос:

Пожалуйста, помогите определить причину исключения из последовательности стека:

 Error=Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding., 

StackTrace = at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Booleanamp; dataReady)
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Taskamp; task, Boolean asyncWrite)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Taskamp; task, Boolean asyncWrite)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at Core.ResService.DataAccess.SQLHelper.ExecuteNonQuery(SqlConnection conn, SqlTransaction trans, CommandType cmdType, String cmdText, SqlParameter[] cmdParms)
   at Core.ResService.DataAccess.ReservationDal.SelectActiveResXml(Int32 resvID, String sessionID)
   at Core.ResService.BusinessLogic.Reservation.SelectActiveReservation(Int32 hotelID, Int32 resvID, String sessionID) 
  

любая идея о приведенной выше структуре стека исключений, например, возможное разрешение и причины, будут оценены.

Комментарии:

1. google.com/#q=ADO.NET TIMEOUT

2. По умолчанию SQL-соединения, которые вы создаете из своего приложения, истекают через 30 секунд. Если ваш запрос занимает больше времени, вы получите исключение. Либо выполните некоторую настройку производительности в запросе (добавьте индексы, проверьте предложение where и т. Д.) Или увеличьте время ожидания вашего соединения в вашем коде.

Ответ №1:

Это говорит вам прямо там, в трассировке стека. Время ожидания вашего SQL-вызова истекло. Либо исправьте вызов SQL, либо увеличьте время ожидания. В объекте command есть свойство timeout, но вы действительно должны исправить свой SQL.