2011-05-02 85 views
0

我在ADO.Net應用程序中與SQL Server的ADO-DB連接有問題。 我在Web服務啓動時打開連接,並在結束時關閉它。只要服務運行,就會打開連接。 我正在將連接傳遞給實際處理事務的COM dll。 我現在正面臨一個問題,即執行相同的執行後,該命令執行後會執行異常拋出異常,但連接狀態僅顯示「打開」。 因此,我們必須關閉連接並打開它並重試交易。這種方式起作用。 但我想知道根本原因一個實際的解決方案。 還有一件事,我們現在只有一個客戶。保持ADODB連接打開一段時間

+0

你有什麼例外?服務啓動時打開連接意味着什麼?你的意思是每個請求打開連接還是隻打開一次應用程序的整個生命週期? COM組件如何處理連接?改進你的問題,因爲你錯過了很重要的細節。 – 2011-05-02 08:18:20

+0

從C++(COM dll)中,異常只是E_FAIL。當我在.Net中測試同樣的東西時,異常是「連接失敗」。我在web服務啓動時打開連接(僅適用於應用程序的整個生命週期) .COM組件是實際執行所有事務的組件。連接對象被傳遞給COM組件。 – Sana 2011-05-02 09:12:03

回答

0

保持連接在應用程序的整個生命週期中打開是一種不好的做法。連接可能會超時,可能會出現一些網絡問題等。連接可能會失敗,並且無法避免 - 必須捕獲異常並以某種方式處理它。此外,這不允許您同時處理多個請求,因爲在單個連接上不能有兩個併發事務。

正確的方法是爲每個Web服務請求創建一個新的連接。 .NET默認情況下使用連接池,因此性能影響非常小。

+0

ADODB.Connection在C#.Net中默認提供連接池嗎? – Sana 2011-05-03 07:45:27

+0

你如何創建連接?在你的問題中顯示一些代碼。它是.NET連接還是一些互操作? – 2011-05-03 07:50:54

+0

創建連接如下 – Sana 2011-05-03 08:08:31