โปรแกรมที่ฉันพัฒนาภายใต้ระบบไฟล์ได้รับการกำหนดค่าภายใต้ IIS และมีปัญหาบางอย่างกับคุกกี้
1. การสูญเสียคุกกี้ ฉันเขียนเรียงความเมื่อไม่กี่วันก่อน "ปัญหาที่ยากมาก โปรแกรมเว็บที่พัฒนาภายใต้กลไกระบบไฟล์ที่ใช้ vs2005 ไม่สามารถทำงานได้ตามปกติหากกำหนดค่าเป็น iis" "" บันทึกวิธีแก้ปัญหาของฉันในการสูญเสียคุกกี้ที่จัดเก็บสิทธิ์ของผู้ดูแลระบบขั้นสูง แม้ว่าในที่สุดปัญหาจะได้รับการแก้ไข แต่ฉันก็ยังไม่เข้าใจเหตุผล ในตอนท้ายของบทความ ฉันให้เหตุผลว่าทำไมมันจึงทำงานได้ตามปกติภายใต้ระบบไฟล์ แต่ไม่อยู่ภายใต้ iis: ระบบไฟล์จัดเตรียมไมโครเซิร์ฟเวอร์ทุกครั้งที่มีการดีบั๊ก และหน่วยความจำจะถูกจัดสรรใหม่ทุกครั้ง ครั้งแรกที่คุณรันภายใต้ iis คือการจัดสรรหน่วยความจำ ตราบใดที่โปรแกรมไม่เปลี่ยนแปลงและไม่จำเป็นต้องคอมไพล์ใหม่ หน่วยความจำจะไม่ถูกจัดสรรใหม่อีกต่อไป วันนี้ฉันเห็น "ชุดคำถามที่พบบ่อยเกี่ยวกับการใช้เซสชันใน ASP.NET" ที่กล่าวถึงที่นี่: อาจเกี่ยวข้องกับสภาพแวดล้อมของเครื่อง เช่น ไฟร์วอลล์หรือซอฟต์แวร์ป้องกันไวรัส เป็นต้น ลองปิดไฟร์วอลล์ (ตัว เหตุผลในการสูญเสียเซสชันควรเกี่ยวข้องกับเหตุผลในการสูญเสียคุกกี้) เหมือนกัน) ฉันคิดว่าสิ่งที่เขาพูดนั้นสมเหตุสมผล การรันภายใต้ระบบไฟล์ไม่ควรผ่านไฟร์วอลล์ แต่การทำงานภายใต้ iis จะต้องผ่านไฟร์วอลล์ ดูเหมือนว่าฉันไม่ใช่คนเดียวที่ประสบปัญหานี้ ฉันไม่เคยพบการสูญเสียคุกกี้หรือเซสชันใด ๆ เมื่อใช้ asp.net1.1 มาก่อน
2. ตัวอักษรจีนในคุกกี้อ่านไม่ออก จู่ๆ ฉันก็ค้นพบเมื่อคืนนี้ว่ามีปัญหาอื่นกับตัวอักษรจีนในคุกกี้ภายใต้ IIS โดยแสดงตัวอักษรที่อ่านไม่ออก
ใช้เวลานานในการแก้ปัญหา:
//เมื่อเขียนคุกกี้
string t =HttpUtility.UrlEncode (ค่าภาษาจีนที่จะเขียนลงในคุกกี้);
HttpCookie c = ใหม่ HttpCookie("user_realname", t);
Response.Cookies.Add(c);
//เมื่ออ่านคุกกี้
t=ค่าคุกกี้ภาษาจีนที่ได้รับ
t = HttpUtility.UrlDecode(ชื่อครู);
แค่นั้นแหละ.
เตือนเพื่อนๆ ที่ใช้ระบบไฟล์ vs2005 เพื่อพัฒนาโปรเจ็กต์ที่ต้องให้ความสนใจ
สาเหตุของความแตกต่างในการทำงานของระบบไฟล์และ iis ควรเกี่ยวข้องกับกลไกการทำงาน ฉันหวังว่าจะพบข้อมูลบางอย่างเกี่ยวกับกลไกการทำงานของพวกเขา