cookies的丟失和中文亂碼

我在文件系統下開發出來的程序,配置到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運行有差別的原因應該跟他們的運行機制有關,希望找一些介紹他們運行機制的資料來看!

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章