2010-09-29 37 views
2

我們有WCF服務,可以通過多種協議爲不同的客戶運行。大多數工作正常,但是當我們使用SSL時,連接需要很長時間才能關閉。打開連接不成問題,但關閉非常緩慢。WCF連接使用SSL非常緩慢地關閉

最奇怪的現象是關閉時間與連接上傳輸的數據量成正比。如果只有幾個字節從服務器發送到客戶端,則連接將立即關閉,但返回幾百行的搜索需要很長時間才能關閉與原始搜索相同的連接。關閉時間似乎與傳輸的數據量成正比。看起來結果會在連接關閉之前重新發送回服務器進行驗證。

錯誤幾乎不會被拋出,但連接關閉時間本質上是執行呼叫所需的時間的兩倍。

以下是一些基本設置: 自定義綁定 二進制編碼 可靠的會話,有序=真 綁定元素使用RemoteCertificateValidationCallback

所有代理的HttpsTransportBindingElement 與編程的ChannelFactory構建。

回答

0

只是一個理論,它可能是它在代理關閉時寫入日誌,並且由於解密而獲得額外的命中,或者它不會緩存https結果。

  • 您是否打開了任何WCF日誌記錄?
  • 當您關閉代理時,CPU是否會激增?
  • 你可以檢查它是否實際發送兩個請求到服務器?
1

我們發現問題出在ReliableSession上。 ReliableSession試圖驗證在下一個連接中發送的所有內容。這聽起來像一個好主意,但它本質上是毫無價值的,因爲即使我發現了一些沒有驗證的事情,對它做任何事情都爲時已晚。

底線:ReliableSession不是很可靠。

相關問題