2013-02-22 52 views
0

我有一個客戶機/服務器體系結構的.NET服務,客戶機通過軟件負載平衡器連接到服務器機器。我將HttpWebRequest.ServicePoint.ConnectionLeaseTimeout屬性設置爲一個特定值,以便連接每隔一段時間終止,並且在服務器行爲異常的情況下,SLB會給客戶端一個新的連接到不同的(或可能相同的)服務器。HttpWebRequest底層連接關閉事件/通知

我的問題是:

是否有啓動每當ConnectionLeaseTimeout間隔耗盡得到通知的方式和新的服務器的新連接?我希望每次發生這種情況時都要記錄新服務器的信息,以確保我確實正在更新連接,而不是僅僅持有某臺計算機的時間超過了我應該的時間。

我希望有一些內置的支持這種情況下,我不必存儲當前主機的信息,並不斷檢查每一次(每隔幾個請求或每隔一段時間),我'與新服務器連接(通過與之前的比較)並跟蹤變化的時間。即使我這樣做了,也無法確定是否在兩個連續的時間間隔內我連接到同一臺服務器,因爲我沒有發佈第一個連接,或者因爲SLB給了我同一臺服務器。

回答

0

租約超時的問題在於,您不知道何時(在您的代碼中)它將發生,因爲它將與您的代碼異步。所以,如果它確實通知你一個斷開連接,它將不得不在一些工作線程,你只需要存儲這些信息,並使用它,當你的主線程已經到了可以做任何事情的地步信息。這一點通常是您下次想要使用網絡請求做些事情。所以,你可以做的唯一真正的事情就是檢測下一次使用請求的結果WebException

+0

我明白了你的觀點,但現在我只想記錄可以在併發線程上發生的事件...爲了給您更多的上下文,SLB人員聲稱我也堅持使用這些機器很長,我想向他們證明情況並非如此,SLB實際上一直在給我同樣的機器。 – 2013-02-23 00:51:19

+0

沒有事件。你必須嘗試發送連接上的東西,看看它是否仍然連接。如果它是http,你可能無法做到這一點。 – 2013-02-23 02:45:53

+0

謝謝你們。只是想確保在實現某些功能之前沒有開箱即用的解決方案...... – 2013-02-24 20:12:51

相關問題