出現的問題:
上個月,有朋友負責的網站在網域名稱變更(變更後的網域名稱比變更前更長)後,出現了個別使用者在登入時失敗的情況。他確認在升級網域名前後,程式和伺服器的配置都沒有變更過,環境如下:Windows Server 2003,IIS6,ASP.net 2.0
出現的現象:
1、個別使用者登入時服務端無應答
2、查詢IIS的日記,發現日記顯示是應答http 200正常
3、通過服務端和用戶端捉包,探索服務端沒有應答包到用戶端
解決過程:
google,baidu了半天,沒找到相關問題的解決方案。通過以上現象,同時在用戶端使用HttpAnalyzer軟體捉取能正常登入使用者的包,發現在使用者登入後,服務端會寫入10多個cookie,包括使用者加密後的一些設定檔(如上次登入時間、登入IP等一些個人配置資料),初步懷疑是由於IIS寫入Cookie時有問題,因為網域名稱升級後比原來的長,導致cookie的大小變大了。
查詢RFC2965協議,發現 在5.3節有對cookie限制的描述:合計300個cookies,每個網域名稱20個cookies,每個cookie(含名稱、值、有效期間等)4096位元組。但比對了系統寫入的cookie大小,也差不多有2900個位元組,離規定好像還比較遠,找不到其它原因也只能試一下減少cookie了,於時去掉了兩個沒有什麼用處的cookie再試,問題就解決了。
總結:
1、好像在IIS6下特定環境下就會出現這個問題,因為當時整個項目有10多台Web伺服器做了F5,但只有2台出現這個問題。針對這個問題,我在IIS7下也進行了一下測試,發現當Cookie的大小達到30000多位元組時,就會出現有應答為200的包,但應答的內容為空白,在IE上顯示為“ Internet Explorer cannot display the webpage ”,所以具體能使用cookie有多大,IIS6和IIS7下標準不一。
2、建議不要將使用者配置等過大的資訊寫入cookie,搞不清楚什麼時候IIS就出錯了
以上是真實項目過程在遇到的問題,希望能協助到大家。謝謝
--------------------
轉載請註明出處