我在C#中創建了一個.Net 3.5 Web服務,它通過ODBC與Progress OpenEdge數據庫進行通信。如何限制.Net Web應用程序的ODBC連接數量?
此數據庫已設置爲僅允許Web服務正在使用的用戶帳戶(第三方限制)上的10個同時連接。
當Web服務獲取大量併發請求並嘗試連接到每個請求的數據庫時,我遇到了一個巨大的問題。當超過連接限制時,數據庫將在幾分鐘內拒絕新的傳入連接。
Web服務在Windows Server 2008上運行。 爲ODBC驅動程序啓用連接池。
我不知何故將不得不限制我的Web服務試圖做出的連接數,但我不知道如何。我正在使用的Progress OpenEdge ODBC驅動程序不支持最大池大小參數。
我一直在閱讀大量的文檔資料,從微軟關於這個問題,但我已經能夠得出結論是:
- ,連接池是默認啓用
- 連接池無法從配置我的應用程序
- 默認最大池大小爲100
- 沒有辦法改變的最大池大小,除非駕駛員使用的是支持它
有人可以證實這一點,和/或建議一種方法來限制在這種情況下的連接數量?非常感謝:)
嗯,有趣。我確實想過在這裏使用信號量,但我認爲它不會因爲範圍問題而工作。這裏的信號量變量的範圍是什麼?如果我的Web服務獲取來自不同用戶/機器的請求,IIS是否不會創建我的類的多個實例,從而創建信號量的多個實例,從而使其無用? –
您可以創建'SemaphoreSlim'靜態或創建'ConnectionManager'的靜態實例。我在想後一種情況,因爲你可能有多個Progress OpenEdge服務器,它們會有不同的'ConnectionManager'。 – Romoku
哦,我不知道靜態變量也是Web應用程序中的應用程序範圍。那很好知道。對我來說,這似乎是最好的解決辦法;易於實現,我更喜歡讓應用程序自己管理連接的想法。我會在星期五試試這個,我會在這裏發佈結果。 –