2010-01-23 77 views
2

我有一個客戶端應用程序使用基於cookie的身份驗證與ASP.NET Web服務進行通信。 (客戶端調用一個登錄方法,該方法設置一個持久性cookie,然後在登錄會話中跨請求重新使用該cookie)。HttpWebRequest丟失cookie

這一直工作良好一段時間,但我已經開始從一個新客戶端使用的幾臺機器獲得錯誤報告,似乎表明該cookie未成功地被雙向傳輸。 (登錄請求全部成功,但所有後續請求都失敗,並且302重定向到登錄資源)

我正在使用CookieContainer,我手動附加到每個HttpWebRequest,以確保Cookie保留在每個請求。

這些機器上是否有攔截/阻止cookie傳輸的「安全」軟件? (使用SSL的I am)。如果是這樣,是否有什麼可以做的,以告訴正在發生什麼?

+0

你確定你將*相同*'CookieContainer * *實例*附加到每個HttpWebRequest中嗎? 對於「我用來確保cookie在每個請求中保留」的含義是什麼?你如何確保? – DxCK 2010-01-23 21:30:22

+0

你能嗅出與提琴手的溝通嗎? – 2010-01-23 21:32:28

+0

是的,我正在使用相同的容器......它在99%的機器連接上工作得很好,只有少數根本無法工作。 (該引用意味着我將相同的cookiecontainer附加到每個Web請求中,以便各個請求共享相同的Cookie集合 – homeInAStar 2010-01-23 21:33:18

回答

0

與安全軟件甚至可以在您的數據包中看到如果您使用SSL完全不同。 SSL數據在進入數據包形式之前應該進行加密;通常它們在使用send()到套接字之前被加密。除非你有一些真棒安全軟件破壞了SSL加密,並且可以查看數據包內部,否則這是不可能的。

每次都是同一臺機器出現故障嗎?或者有些機器有時會隨機失敗,有些機器在其他時間失敗?如果是後者,可能是服務器上發生了什麼,而不是客戶端。

+0

同一套3臺機器一直出現故障當這些機器的用戶切換到其他機器時,一切似乎都可以正常工作。我部署了一些更新的診斷程序,希望能夠從這些機器中捕獲更多信息。 – homeInAStar 2010-01-24 16:07:59

+0

您可以爲您的應用程序啓用tracelogging。請參閱:http:// fe rozedaud.blogspot.com/2009/08/tracing-with-systemnet.html。然後查看日誌文件以瞭解Cookie未被髮送的原因。 – feroze 2010-01-25 02:32:05

+0

另外,是否有可能在客戶端和服務器之間有負載平衡器?因此,如果機器M1正在響應中設置cookie,但如果後續請求要M2機器,則M2顯然不知道如何處理該cookie,並可能會丟棄它。 – feroze 2010-01-25 19:49:14