2015-06-22 59 views
1

在Windows 2012上使用ARR和IIS將新的Webfarm部署到新的webfarm後,我遇到了一些問題。WCF通過ARR:消失的cookie

試圖使用wcftestclient調用方法,我得到「安全上下文令牌已過期或無效,郵件未處理。」

我已經在配置文件中啓用了cookie。 綜觀Wireshark的交通流,這是我所看到的:

-> POST, SOAP 
<- Set-Cookie: ARRAffinity=..., SOAP 
-> POST, Cookie: ARRAffinity=..., SOAP 
<- SOAP 
-> POST, Cookie: ARRAffinity=..., SOAP 
<- SOAP 
-> POST, SOAP (no cookie) 
<- SOAP (500) 

轉儲從Wireshark的,剝去內容:https://ghostbin.com/paste/mshuk

綜觀Splunk的日誌中,我看到,最後一篇文章得到定向到與以前不同的場服務器,導致安全上下文無效。

+0

你有沒有找到這方面的解決方案? Tx – Fabske

+1

可悲的是,沒有。我結束了我的WCF服務的專用主機。 –

回答

1

這不是您的問題的解決方案,但我希望它能幫助人們。

由於找不到正確的方法來處理ARR cookie,我將問題放在了另一個方向:如何讓WCF完全無狀態,以便每個呼叫都可以在任何服務器上進行,因此我們不在乎關於ARR cookie。

在WCF方面很簡單:在綁定上設置EstablishSecurityContext = false。

在代碼:

binding.Security.Message.EstablishSecurityContext = false; 

在XML:

<binding name="SecureBindingBigSize"> 
    <security mode="TransportWithMessageCredential"> 
    <message establishSecurityContext="false" clientCredentialType="UserName"/> 
    </security> 
</binding> 

當然,你的應用程序必須與這種行爲兼容(=不使用會話)。

有關信息,我的WsHttpBinding使用https和TransportWithMessageCredential安全性。