2011-05-02 3 views
0

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

+0

У вас есть исключение? Что вы понимаете, открывая соединение при запуске службы? Вы имеете в виду открытие соединения по запросу или только один раз на весь срок службы приложения? Что делает COM-компонент с соединением? Улучшите свой вопрос, потому что вы пропустили очень важные детали. –

+0

Из C++ (COM dll) исключение - это просто E_FAIL.Когда я тестировал одно и то же в .Net, исключение - «Ошибка соединения». Я открываю соединение при запуске моего веб-сервиса (только на весь срок службы приложения) Компонент .COM - это тот, который фактически выполняет все транзакции. Объект соединения передается COM-компоненту. – Sana

ответ

0

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

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

+0

Поддерживает ли ADODB.Connection объединение пулов по умолчанию в C# .Net? – Sana

+0

Как вы создаете соединение? Покажите код в своем вопросе. Это .NET-соединение или какой-то интерпоп? –

+0

Создание соединения похоже на следующее: – Sana

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