我在檔案系統下開發出來的程序,配置到iis下,cookies出來了一些問題。
1,cookies的遺失我在前幾天的隨筆《十分棘手的問題,使用vs2005在文件系統機制下開發出來的web程序,配置到iis就不能正常運行? 》記錄了我解決遺失儲存超級管理員權限的cookies的問題,雖然問題最後解決了,但我沒有搞清楚原因。隨筆最後我給了一個在檔案系統下正常,在iis下不正常的牽強理由:檔案系統在每次調試時提供了一個微型伺服器,每次都是重新分配記憶體。而在iis下第一次運行是分配內存,只要程式不做改動,不用重新編譯,就不再重新分配內存了。今天又看到《在ASP.NET中使用Session常見問題集錦》這裡提到:可能和機器的環境有關係,例如:防火牆或防毒軟體等,嘗試關閉防火牆(失去Session的原因應該跟失去cookies的原因一樣)。覺得他講的也有道理,在檔案系統下運作應該不通過防火牆,在iis下運作就要通過防火牆了。看來這個問題不只我一人遇過。我在以前使用asp.net1.1的時候到沒遇到過遺失cookies或session的情況。
2,cookies的中文亂碼我昨天晚上突然又發現,iis下cookies裡的中文又出現問題了,顯示亂碼。
費了好一段時間,才解決:
//寫入cookies時
string t =HttpUtility.UrlEncode(要寫入cookies的中文值);
HttpCookie c = new HttpCookie("user_realname", t);
Response.Cookies.Add(c);
//讀取cookies時
t=取得的中文cookies值;
t = HttpUtility.UrlDecode(teacher_name);
這樣就解決了。
提醒正在使用vs2005檔案系統開發專案的朋友注意一下。
造成檔案系統與iis運作有差別的原因應該跟他們的運作機制有關,希望找一些介紹他們運作機制的資料來看!