Сохраняя соединение ADODB открытым некоторое время - PullRequest
0 голосов
/ 02 мая 2011

У меня проблема с подключением ADO-DB к SQL Server в приложении ADO.Net. Я открываю соединение в веб-сервисе, когда он запускается, и закрываю его, когда он заканчивается. Значит, соединение открыто до тех пор, пока сервис работает. Я передаю соединение в COM DLL, которая на самом деле обрабатывает транзакции. Теперь я сталкиваюсь с одной проблемой: команда выполняет исключение throws через некоторое время, хотя то же самое выполнение работало и раньше. Но состояние соединения показывает только Open. Поэтому мы должны закрыть соединение, открыть его и повторить транзакцию. Таким образом, это работает. Но я хочу знать причину фактического решения для этого. Еще одна вещь, у нас сейчас только один клиент.

1 Ответ

0 голосов
/ 02 мая 2011

Сохранение соединения открытым в течение всего срока службы приложения - плохая практика.Соединение может прерваться, могут возникнуть некоторые проблемы с сетью и т. Д. Соединение может просто прерваться, и избежать этого невозможно - вы должны перехватить исключение и как-то его обработать.Также это не позволяет вам обрабатывать несколько запросов одновременно, потому что вы не можете иметь две одновременные транзакции на одном соединении.

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

...