ในการดีบักโปรแกรมบางครั้งฉันต้องรู้ว่ามีการใช้ตัวแปรเซสชันกี่ตัวและค่าของพวกเขาคืออะไร? เนื่องจากวัตถุเซสชันมีคอลเลกชันที่เรียกว่าเนื้อหาเราสามารถบรรลุเป้าหมายผ่านสำหรับ ... แต่ละลูป: Dim Strname, Iloop, Iloop
สำหรับแต่ละ strname ในเซสชัน
Response.write strname & " -" & session.contents (strName) & "<br>"
โดยทั่วไปรหัสด้านบนสามารถทำงานได้ดี แต่เมื่อตัวแปรเซสชันเป็นวัตถุหรืออาร์เรย์ผลลัพธ์ของการพิมพ์ไม่ถูกต้อง ด้วยวิธีนี้เราแก้ไขรหัสดังต่อไปนี้: "ก่อนอื่นดูว่ามีตัวแปรเซสชันกี่ตัวที่ใช้งาน?
"ตัวแปรเซสชัน <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-> Application Settings-> Configuration-> App Options-> Session TimeoutOut
หรือใน ASP เขียนรหัสดังกล่าว: session.timeout = 60
ประการที่สามเซสชันเกี่ยวข้องกับเว็บแอปพลิเคชันเฉพาะ หากผู้ใช้เรียกดูจาก /products/default.asp ถึง /jobs/default.asp มันอาจทำให้เกิดการสร้างเซสชันอีกครั้ง จะล้างตัวแปรเซสชันที่ไม่ต้องการอีกต่อไป แต่ไม่ทำให้เซสชันล้มเหลว? ใน asp3.0:
session.contents.remove "ชื่อตัวแปร"
คุณสามารถลบตัวแปร
ใน asp2.0:
ตั้งค่าเซสชัน ("ชื่อตัวแปร") = null
สามารถล้างตัวแปร
ใน asp3.0
session.contents.removeal
คุณสามารถล้างตัวแปรเซสชันและเซสชันทั้งหมดได้ < %@ enableSessionState = True %> ที่ด้านบนของหน้า ASP หมายถึงอะไร? IIS ใช้เทคโนโลยีที่เรียกว่าการติดตามเซสชันเพื่อให้แน่ใจว่าแต่ละตัวแปรเซสชันมีอยู่ในแต่ละหน้า เมื่อผู้ใช้เยี่ยมชมหน้า ASP ที่แน่นอน IIS จะเตรียมตัวแปรเซสชันแต่ละตัวก่อนสำหรับหน้านี้ซึ่งแน่นอนว่าจะมีผลกระทบด้านประสิทธิภาพ (ค่าใช้จ่ายในการใช้ตัวแปรเซสชันนั้นสูงมากเสมอ!)
หากคุณมี 100 หน้าและใช้เพียง 5 หน้าสำหรับเซสชันดังนั้นสำหรับประสิทธิภาพโดยรวมคุณจะต้องตั้งค่าใน 5 หน้าเหล่านั้น:
< %@ enableSessionState = True %>
และหน้าอื่น ๆ ถูกตั้งค่าเป็น:
< %@ enableSessionState = false %>