2016-07-06 2 views
1

У меня возникли проблемы со следующей ошибкой:ASP - период ожидания истекло до получения соединения из пула

"Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached."

кажется, что ошибка в следующем блоке кода:

da = new SqlDataAdapter(command); 
command.CommandTimeout = 100; 
da.Fill(dt); 
conn.Close(); 
return dt; 
+0

Вероятно, следует обернуть команду и соединение в оператор using. Это может помочь в утечке ваших соединений. –

ответ

0

Трудно сказать с таким небольшим количеством кода в вашем вопросе, но эта ошибка может возникнуть, если вы неправильно используете свои объекты соединения db. Операция «using» может помочь вам решить эту проблему. Существует проблема SO с тем же сообщением об ошибке и примерами кода здесь: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. которые могут помочь.

0

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

Так что попробуйте закрыть соединение после завершения метода. Или пока вы можете установить максимальный размер пула в файле web.config как 1000 или более.

+0

Что я не понимаю, так это то, что у меня уже есть conn.Close() в коде. Итак, почему существует возможность не закрытой связи? –

+0

Если ваш сайт имеет несколько сеансов, и вы не закрываете соединение каждый раз после открытия, то это будет проблема пула приложений, вы рассказываете мне о текущем соединении, но мы хотим видеть все соединения с базой данных, которые находятся в открытом состоянии, просто команда fire sp_who2 вы получите информацию обо всех подключениях. –

Смежные вопросы

 Смежные вопросы