2011-06-11

ASP.NET的Cookie無法正確寫入、讀取,電腦名稱才是兇手!?

以為是ASP.NET在寫入Cookie的時候Path或是Domain錯誤,造成無效,也以為是Web.confg裡面的設定Cookie的存取方式與Client之間無法正常存取,結果發現都不是。
第一次碰到這種問題,Google一下也沒太多答案,同樣的網站,只知道IE會發生,Firefox卻正常。
測試方法:確定問題出在IE不在ASP.NET的程式!?
1.開啟IE的Cookie寫入提示,網際網路選項→隱私權→進階
2011-06-11_140634
選取【撤銷自動Cookie處理】,將第一方Cookie與第三方Cookie都設定成提示

2011-06-11_141143

隨便找個會寫入Cookie的網頁瀏覽看看,IE將提示有寫入Cookie的動作,不過瀏覽自己寫的網頁,明明程式要寫入Cookie,但IE怎麼都沒有提示!?
2011-06-11_141406
由此可知,問題出在IE!!!


接著做了許多測試,發現輸入網址使用IP就正常,使用電腦名稱瀏覽Cookie就不會有寫入動作
結論:IE會將某些奇怪的名稱當做是不合法的網址,自然就不會寫入Cookie,不過網頁一樣可以正常瀏覽,吐血!我測試的主機電腦名稱有一個【_】,昏倒,就這麼簡單的問題!下次記得別把自己的電腦名稱用太多特殊符號,不然不知道還會發生什麼奇怪的問題!!
想試試看的話,不一定要修改伺服器的電腦名稱,只需要將Client端Windows的hosts檔動點手腳,就可以了。
假設伺服器的電腦ip是192.168.0.99,電腦名稱是fool_monkey
只要將Client端系統內%systemroot%\system32\drivers\etc資料夾裡面的hosts檔,用記事本開啟,加入一行
【192.168.0.99 foolmonkey.com.tw】中間有空一格,存檔案後就可以了。
可以試試ping指令,會發現ping foolmonkey.com.tw會變成ping 192.168.0.99那就是成功了
接著測試網頁!!!在網址列輸入http://foolmonkey.com.tw去測試原本寫入Cookie有問題的網頁會發現Cookie正常了!!真是夠怪的問題!!(Hosts檔玩完記得要改回來呦!)

分享至 :

沒有留言:

張貼留言