ในการดีบักโปรแกรมบางครั้งฉันต้องรู้ว่ามีการใช้ตัวแปรเซสชันกี่ตัวและค่าของพวกเขาคืออะไร? เนื่องจากวัตถุเซสชันมีคอลเลกชันที่เรียกว่าเนื้อหาเราจึงสามารถบรรลุเป้าหมายผ่านสำหรับ ... แต่ละลูป
Dim Strname, Iloop
สำหรับแต่ละ strname ในเซสชัน
Response.write strname & - & session.contents (strName) & [br]
ต่อไป
ภายใต้สถานการณ์ปกติรหัสข้างต้นสามารถทำงานได้ดี แต่เมื่อตัวแปรเซสชันเป็นวัตถุหรืออาร์เรย์ผลลัพธ์ของการพิมพ์ไม่ถูกต้อง วิธีนี้เราแก้ไขรหัสดังนี้:
'ก่อนอื่นดูว่ามีการใช้ตัวแปรเซสชันกี่ตัว?
Response.write คือ & session.contents.count & _
ตัวแปรเซสชัน <p>
Dim Strname, Iloop
'ใช้สำหรับแต่ละรายการเพื่อตรวจสอบเซสชัน
'ถ้าตัวแปรเซสชันเป็นอาร์เรย์?
ถ้า isarray (เซสชัน (strname) แล้ว
'แต่ละองค์ประกอบของอาร์เรย์พิมพ์วงกลม
สำหรับ iloop = lbound (เซสชัน (strName)) ถึง Ubound (เซสชัน (strName))
Response.write strname & (& iloop &) - & _
เซสชัน (strName) (iloop) & <br>
ต่อไป
อื่น
'ในกรณีอื่น ๆ เพียงพิมพ์ค่าของตัวแปรเพียงแค่
Response.write strname & - & session.contents (strName) & <br>
สิ้นสุดถ้า
ต่อไป
บางครั้งตัวแปรเซสชันไม่สามารถทำงานได้ทำไม? มีความเป็นไปได้มากมาย: ก่อนอื่นหากลูกค้าไม่อนุญาตให้ใช้คุกกี้เซสชันจะล้มเหลว เพราะเซสชันอาศัยคุกกี้ ประการที่สองเซสชันมีการตั้งค่าเวลาล้มเหลว การตั้งค่าเริ่มต้นคือ 20 นาที คุณสามารถแก้ไขได้เช่นนี้: Web Diretory-> Properties-> Virtual Directory-> การตั้งค่าแอปพลิเคชัน-> การกำหนดค่า-> ตัวเลือกแอพ-> เวลาเซสชันหรือเขียนรหัสนี้: เซสชัน. tim eout = 60 ประการที่สามเซสชันเกี่ยวข้องกับเว็บแอปพลิเคชันเฉพาะ หากผู้ใช้เรียกดูจาก /products/default.asp ถึง /jobs/default.asp มันอาจทำให้เกิดการสร้างเซสชันอีกครั้ง จะล้างตัวแปรเซสชันที่ไม่ต้องการอีกต่อไป แต่ไม่ทำให้เซสชันล้มเหลว? ใน asp3.0: session.contents.Remove ชื่อตัวแปรสามารถล้างเพื่อลบตัวแปร ใน ASP2.0: ตั้งค่าเซสชัน (ชื่อตัวแปร) = null เพื่อลบตัวแปร ใน Asp3.0, session.contents.removeall สามารถล้างตัวแปรเซสชันทั้งหมดจาก session.abandon วิธีการข้างต้นจะไม่ทำให้เซสชันปัจจุบันหรือไม่ถูกต้อง ด้านบนของหน้า ASP หมายถึงอะไร? IIS ใช้เทคโนโลยีที่เรียกว่าการติดตามเซสชันเพื่อให้แน่ใจว่าแต่ละตัวแปรเซสชันมีอยู่ในแต่ละหน้า เมื่อผู้ใช้เยี่ยมชมหน้า ASP ที่แน่นอน IIS จะเตรียมตัวแปรเซสชันแต่ละตัวก่อนสำหรับหน้านี้ซึ่งแน่นอนว่าจะมีผลกระทบด้านประสิทธิภาพ (ค่าใช้จ่ายในการใช้ตัวแปรเซสชันนั้นสูงมากเสมอ!) หากคุณมี 100 หน้าและใช้เพียง 5 หน้าสำหรับเซสชันจากนั้นสำหรับประสิทธิภาพโดยรวมคุณจะต้องตั้งค่าใน 5 หน้านั้น:
< %@ enableSessionState = True %>
และหน้าอื่น ๆ ถูกตั้งค่าเป็น:
< %@ enableSessionState = false %>