2014-11-05 27 views
0

我的問題是: - 我有一個.net MVC網站製作兩個服務器託管的負載平衡服務器落後很多調用WCF服務(BIGIP)。對WCF客戶維護用戶會話,同時撥打電話到服務器後面的負載均衡

我必須保持對WCF服務的用戶會話(通過自定義的令牌控制)。 我的問題是,當很多用戶在網站上登錄時,粘性會話不起作用(很多併發的服務調用)。

我發現當站點調用服務重用現有連接時,負載均衡服務器忽略粘滯會話cookie,並將請求轉發給通過此連接接收呼叫的最後一個服務器。

我檢查使用嗅探器(Wireshark的),每個呼叫發送到與正確的粘性會話令牌負載均衡服務器。

當從頭開始創建一個連接棒會話cookie是考慮到和請求進入到正確的服務器。

所以,我該怎麼處理這種情況? 我正在尋找強制在每次調用時創建新連接的內容,但屬性KeepAliveEnabled =「false」不起作用。

Tks。

+3

儘量做到僞無狀態的會話數據移動到同步店如數據庫或AppFabric的 – TGlatzer 2014-11-05 18:08:20

+0

這是我的解決方法解決方案,但現在我避免這種匯衆! – 2014-11-05 18:09:14

+0

請注意,即使機器停機以進行修補,部署或修理,粘性會話也會產生問題。這使得他們大多數時間都是不可行的解決方案。 – usr 2014-11-05 19:16:48

回答

0

我的問題是解決了使用正確的keepAliveConnection配置框架4. 貝婁是在CONFIGS。

錯誤的一個

<bindings> 
    <customBinding> 
    <binding name="WSHttpBinding_IServiceSessionCreator" keepAliveEnabled="false"> 
     <httpTransport /> 
    </binding> 
    </customBinding> 
</bindings> 

正確的

<bindings> 
    <customBinding> 
    <binding name="WSHttpBinding_IServiceSessionCreator" > 
     <textMessageEncoding /> 
     <httpTransport allowCookies="false" keepAliveEnabled="false"/> 
    </binding> 
    </customBinding> 
</bindings> 

我不知道爲什麼第一個沒有工作。 我看到它在這個環節http://msdn.microsoft.com/en-us/library/vstudio/ms730128(v=vs.100).aspx