ASP Lecture Series (19) การจัดการเซสชัน
ผู้เขียน:Eve Cole
เวลาอัปเดต:2009-05-30 19:58:38
หนึ่งในความท้าทายในการพัฒนาเว็บแอปพลิเคชันให้ประสบความสำเร็จคือการรักษาข้อมูลผู้ใช้ในขณะที่ผู้ใช้ข้ามจากหน้าหนึ่งไปยังอีกหน้าหนึ่งในแอปพลิเคชันระหว่างการเยี่ยมชมหรือเซสชันของผู้ใช้ HTTP เป็นโปรโตคอลไร้สัญชาติ ซึ่งหมายความว่าเว็บเซิร์ฟเวอร์ถือว่าการเข้าถึงเพจแต่ละครั้งเป็นการเข้าถึงที่ไม่เกี่ยวข้อง เซิร์ฟเวอร์จะไม่เก็บข้อมูลใด ๆ เกี่ยวกับการเข้าถึงครั้งก่อน แม้ว่าการเข้าถึงจะเกิดขึ้นภายในสองสามวันนับจากการเข้าถึงปัจจุบันก็ตาม ที่ผ่านมา. การขาดหน่วยความจำของการเข้าชมครั้งก่อนทำให้ยากต่อการเขียนแอปพลิเคชัน เช่น แคตตาล็อกออนไลน์ ซึ่งอาจจำเป็นต้องติดตามรายการแคตตาล็อกที่ผู้ใช้เลือกขณะข้ามไปมาระหว่างหน้าต่างๆ ของแคตตาล็อก
ASP มอบโซลูชันเฉพาะสำหรับการจัดการปัญหาข้อมูลเซสชัน การใช้ออบเจ็กต์เซสชัน ASP และ ID ผู้ใช้พิเศษที่สร้างโดยเซิร์ฟเวอร์ของคุณ คุณสามารถสร้างแอปพลิเคชันอัจฉริยะที่สามารถระบุผู้ใช้ที่เข้ามาแต่ละราย และรวบรวมข้อมูลที่ใช้โดยแอปพลิเคชันเพื่อติดตามการตั้งค่าหรือการเลือกเนื้อหาของผู้ใช้
ASP ตั้งค่า ID ผู้ใช้ผ่านคุกกี้ HTTP คุกกี้ HTTP เป็นไฟล์ขนาดเล็กที่จัดเก็บไว้ในเบราว์เซอร์ของผู้ใช้ ดังนั้น หากคุณกำลังสร้างแอปพลิเคชันสำหรับเบราว์เซอร์ที่ไม่รองรับคุกกี้ หรือหากไคลเอนต์ของคุณตั้งค่าเบราว์เซอร์ไม่ให้ยอมรับคุกกี้ อย่าใช้ฟังก์ชันการจัดการเซสชันของ ASP
คุณยังสามารถเขียนสคริปต์ที่ทำงานเมื่อแอปพลิเคชันเริ่มต้นหรือสิ้นสุดได้
การเริ่มต้นและสิ้นสุดเซสชัน เซสชันสามารถเริ่มต้นได้สามวิธี:
ผู้ใช้ใหม่ร้องขอการเข้าถึง URL ที่ระบุไฟล์ .asp ในแอปพลิเคชันที่มีไฟล์ Global.asa ประกอบด้วยขั้นตอน Session_OnStart
ผู้ใช้เก็บค่าไว้ในวัตถุเซสชัน
ผู้ใช้ร้องขอไฟล์ .asp ของแอปพลิเคชัน และไฟล์ Global.asa ของแอปพลิเคชันใช้แท็ก <OBJECT> เพื่อสร้างอินสแตนซ์ของออบเจ็กต์ที่มีขอบเขตเซสชัน
หากผู้ใช้ไม่ร้องขอหรือรีเฟรชเพจใดๆ ในแอปพลิเคชันตามระยะเวลาที่กำหนด เซสชันจะสิ้นสุดโดยอัตโนมัติ ค่าเริ่มต้นสำหรับช่วงเวลานี้คือ 20 นาที คุณสามารถเปลี่ยนการตั้งค่าขีดจำกัดการหมดเวลาเริ่มต้นของแอปพลิเคชันได้โดยการตั้งค่าคุณสมบัติ "การหมดเวลาของเซสชัน" ในหน้าคุณสมบัติ "ตัวเลือกแอปพลิเคชัน" ในตัวจัดการบริการอินเทอร์เน็ต ค่านี้ควรตั้งค่าตามความต้องการของเว็บแอปพลิเคชันของคุณและพื้นที่หน่วยความจำของเซิร์ฟเวอร์ ตัวอย่างเช่น หากคุณต้องการให้ผู้ใช้ที่เรียกดูเว็บแอปพลิเคชันของคุณอยู่บนแต่ละหน้าเพียงไม่กี่นาที คุณควรลดค่าการหมดเวลาของเซสชันเริ่มต้นให้สั้นลง ค่าการหมดเวลาเซสชันที่ยาวเกินไปจะทำให้เซสชันที่เปิดอยู่มากเกินไปทำให้ทรัพยากรหน่วยความจำของเซิร์ฟเวอร์ของคุณหมด
สำหรับเซสชันที่ระบุ หากคุณต้องการตั้งค่าการหมดเวลาให้น้อยกว่าค่าการหมดเวลาเริ่มต้น คุณสามารถตั้งค่าคุณสมบัติการหมดเวลาของออบเจ็กต์เซสชันได้ ตัวอย่างเช่น สคริปต์ต่อไปนี้ตั้งค่าการหมดเวลาเป็น 5 นาที
<%เซสชัน.หมดเวลา = 5%>
คุณยังสามารถตั้งค่าการหมดเวลาให้มากกว่าการตั้งค่าเริ่มต้นได้ คุณสมบัติ Session.Timeout จะกำหนดค่าการหมดเวลา
คุณยังสามารถสิ้นสุดเซสชันได้อย่างชัดเจนผ่านวิธี Abandon ของอ็อบเจ็กต์เซสชัน ตัวอย่างเช่น หากต้องการจัดเตรียมปุ่มออกในตาราง ให้ตั้งค่าพารามิเตอร์ ACTION ของปุ่มเป็น URL ของไฟล์ .asp ที่มีคำสั่งต่อไปนี้
<% เซสชัน ละทิ้ง %>
เกี่ยวกับ SessionID และคุกกี้
เมื่อผู้ใช้ร้องขอไฟล์ .asp ในแอปพลิเคชันที่กำหนดเป็นครั้งแรก ASP จะสร้าง SessionID SessionID คือตัวเลขที่สร้างขึ้นโดยอัลกอริทึมที่ซับซ้อนซึ่งระบุเซสชันผู้ใช้แต่ละเซสชันโดยไม่ซ้ำกัน เมื่อเริ่มต้นเซสชันใหม่ เซิร์ฟเวอร์จะจัดเก็บ ID เซสชันเป็นคุกกี้ในเว็บเบราว์เซอร์ของผู้ใช้
SessionID เป็นเหมือนคีย์ใน ASP ที่สามารถจัดเก็บข้อมูลผู้ใช้ไว้ใน "ปลอดภัย" บนเซิร์ฟเวอร์เมื่อผู้ใช้โต้ตอบกับแอปพลิเคชันระหว่างเซสชัน เช่นเดียวกับที่คีย์สามารถใช้เพื่อเข้าถึงรายการในตู้นิรภัย เนื้อหาของ "ปลอดภัย" ก็สามารถเข้าถึงได้ผ่านคุกกี้ SessionID ของผู้ใช้ที่ส่งในส่วนหัวคำขอ HTTP เมื่อใดก็ตามที่ ASP ได้รับการร้องขอหน้า มันจะตรวจสอบส่วนหัวคำขอ HTTP เพื่อรับคุกกี้ SessionID
หลังจากที่คุกกี้ SessionID ถูกจัดเก็บไว้ในเบราว์เซอร์ของผู้ใช้แล้ว ASP ยังคงใช้คุกกี้ซ้ำเพื่อติดตามเซสชัน แม้ว่าผู้ใช้จะร้องขอไฟล์ .asp อื่น หรือร้องขอไฟล์ .asp ที่ทำงานอยู่ในแอปพลิเคชันอื่น ในทำนองเดียวกัน หากผู้ใช้จงใจละทิ้งเซสชันหรือปล่อยให้เซสชันหมดเวลา แล้วร้องขอไฟล์ .asp อีกไฟล์ ASP จะเริ่มเซสชันใหม่ด้วยคุกกี้เดียวกัน เฉพาะเมื่อผู้ดูแลระบบเซิร์ฟเวอร์รีสตาร์ทเซิร์ฟเวอร์หรือผู้ใช้รีสตาร์ทเว็บเบราว์เซอร์ การตั้งค่า SessionID ที่เก็บไว้ในหน่วยความจำจะถูกล้างและผู้ใช้จะได้รับคุกกี้ SessionID ใหม่
ด้วยการนำคุกกี้ SessionID มาใช้ใหม่ ASP จะลดจำนวนคุกกี้ที่ส่งไปยังเบราว์เซอร์ของผู้ใช้ให้เหลือน้อยที่สุด หรือหากคุณตัดสินใจว่าแอปพลิเคชัน ASP ของคุณไม่ต้องการการจัดการเซสชัน คุณสามารถป้องกันไม่ให้ ASP ติดตามเซสชันและส่ง SessionID ไปยังผู้ใช้ได้
ASP ไม่ส่งคุกกี้เซสชันภายใต้สถานการณ์ต่อไปนี้:
สถานะเซสชันของแอปพลิเคชันถูกปิดใช้งาน
เพจ ASP ถูกกำหนดเป็นแบบไม่มีเซสชัน นั่นคือ เพจมีแท็ก <%@ EnableSessionState=False %>
โปรดทราบว่าคุกกี้ SessionID ไม่มีวิธีการถาวรในการติดตามผู้ใช้จากการเข้าชมเว็บไซต์หลายครั้ง ข้อมูล SessionID ที่จัดเก็บไว้ในหน่วยความจำเซิร์ฟเวอร์อาจสูญหายได้ง่าย หากคุณต้องการติดตามผู้ใช้ที่เยี่ยมชมเว็บแอปพลิเคชันของคุณเมื่อเวลาผ่านไป คุณต้องสร้างข้อมูลประจำตัวผู้ใช้โดยจัดเก็บคุกกี้พิเศษในเว็บเบราว์เซอร์ของผู้ใช้และบันทึกข้อมูลคุกกี้ในฐานข้อมูล
เก็บข้อมูลในวัตถุเซสชัน
อ็อบเจ็กต์เซสชันจัดเตรียมอาเรย์เชื่อมโยงแบบไดนามิกซึ่งสามารถจัดเก็บข้อมูลได้ คุณสามารถจัดเก็บตัวแปรตัวเลขและตัวแปรออบเจ็กต์ไว้ในออบเจ็กต์เซสชันได้
ตัวแปรสามารถจัดเก็บไว้ในวัตถุเซสชันได้โดยการกำหนดค่าให้กับรายการที่มีชื่อในวัตถุเซสชัน ตัวอย่างเช่น คำสั่งต่อไปนี้จะจัดเก็บตัวแปรใหม่สองตัวไว้ในอ็อบเจ็กต์เซสชัน:
-
เซสชั่น("FirstName") = "เจฟฟ์"
เซสชั่น("นามสกุล") = "สมิธ"
-
สามารถรับข้อมูลได้จากวัตถุเซสชันโดยการเข้าถึงรายการที่มีชื่อนี้ ตัวอย่างเช่น แสดงค่าปัจจุบันของ Session("FirstName"):
ยินดีต้อนรับ <%= เซสชัน("FirstName") %>
คุณสามารถจัดเก็บการตั้งค่าของผู้ใช้ไว้ในออบเจ็กต์เซสชัน จากนั้นเข้าถึงการตั้งค่าเพื่อตัดสินใจว่าจะส่งเพจใดให้กับผู้ใช้ ตัวอย่างเช่น คุณสามารถอนุญาตให้ผู้ใช้สามารถระบุเนื้อหาในรูปแบบข้อความเท่านั้นในหน้าแรกของแอปพลิเคชันของคุณ และใช้การเลือกนี้กับหน้าถัดไปทั้งหมดของแอปพลิเคชันที่ผู้ใช้เข้าชม
<% ถ้าเซสชัน("ความละเอียดหน้าจอ") = "ต่ำ" แล้ว %>
นี่คือเวอร์ชันข้อความของเพจ
<%อื่น ๆ%>
นี่คือหน้าเวอร์ชันมัลติมีเดีย
<% สิ้นสุดถ้า %>
คุณยังสามารถจัดเก็บอินสแตนซ์ออบเจ็กต์ไว้ในออบเจ็กต์เซสชันได้ แต่การทำเช่นนี้จะส่งผลต่อประสิทธิภาพของเซิร์ฟเวอร์
จัดการเซสชั่น Web Farm
ข้อมูลเซสชัน ASP ถูกจัดเก็บไว้ในเว็บเซิร์ฟเวอร์ เบราว์เซอร์จะต้องขอเพจจากเว็บเซิร์ฟเวอร์เพื่อรับสคริปต์ที่ใช้ในการเข้าถึงข้อมูลเซสชัน ในเว็บฟาร์ม (ที่เว็บเซิร์ฟเวอร์หลายแห่งรับผิดชอบร่วมกันในการตอบสนองต่อคำขอของผู้ใช้) คำขอของผู้ใช้ไม่ได้ถูกกำหนดเส้นทางไปยังเซิร์ฟเวอร์เดียวกันเสมอไป แต่จะถูกส่งไปยัง URL ด้วยซอฟต์แวร์พิเศษที่เรียกว่ากระบวนการ "โหลดบาลานซ์" ถูกกำหนดให้กับเซิร์ฟเวอร์ฟรีใด ๆ กระบวนการปรับสมดุลโหลดทำให้การรักษาข้อมูลเซสชันใน Web Farm ยากขึ้น
ในการใช้การจัดการเซสชัน ASP บนไซต์ที่มีสมดุลโหลด คุณต้องแน่ใจว่าคำขอทั้งหมดสำหรับเซสชันผู้ใช้นั้นถูกส่งไปยังเว็บเซิร์ฟเวอร์เดียวกัน วิธีหนึ่งคือการเขียนขั้นตอน Session_OnStart ที่ใช้วัตถุการตอบสนองเพื่อเปลี่ยนเส้นทางเบราว์เซอร์ไปยังเว็บเซิร์ฟเวอร์ที่เรียกใช้เซสชันของผู้ใช้ หากลิงก์ทั้งหมดในหน้าแอปพลิเคชันของคุณสัมพันธ์กัน คำขอในอนาคตทั้งหมดสำหรับหน้าจะถูกส่งไปยังเซิร์ฟเวอร์เดียวกัน
ตัวอย่างเช่น ผู้ใช้ต้องการเข้าถึงแอปพลิเคชันโดยขอ URL สากลของไซต์: http://www.microsoft.com กระบวนการปรับสมดุลโหลดกำหนดเส้นทางการร้องขอไปยังเซิร์ฟเวอร์ server3.microsoft.com ASP สร้างเซสชันผู้ใช้ใหม่บนเซิร์ฟเวอร์นี้ ในระหว่างกระบวนการ Session_OnStart เบราว์เซอร์จะถูกเปลี่ยนเส้นทางไปยังเซิร์ฟเวอร์ที่ระบุ:
<% การตอบสนองการเปลี่ยนเส้นทาง ("http://server3.microsoft.com/webapps/firstpage.asp") %>
เบราว์เซอร์จะขอหน้าที่ระบุ และคำขอในอนาคตทั้งหมดจะถูกส่งไปยังเซิร์ฟเวอร์เดียวกัน
ใช้คุกกี้
คุกกี้คือโทเค็นที่เว็บเซิร์ฟเวอร์ฝังอยู่ในเว็บเบราว์เซอร์ของผู้ใช้เพื่อเป็นตัวแทนของผู้ใช้ ครั้งถัดไปที่เบราว์เซอร์เดียวกันร้องขอเพจ เบราว์เซอร์จะส่งคุกกี้ที่ได้รับจากเว็บเซิร์ฟเวอร์ คุกกี้อนุญาตให้ชุดข้อมูลเชื่อมโยงกับผู้ใช้ สคริปต์ ASP ใช้คอลเลกชันคุกกี้ของวัตถุการตอบสนองและคำขอเพื่อรับและตั้งค่าคุกกี้
ตั้งค่าคุกกี้
หากต้องการตั้งค่าคุกกี้ ให้ใช้ Response.Cookies หากไม่มีคุกกี้ Response.Cookies จะสร้างคุกกี้ใหม่ ตัวอย่างเช่น หากต้องการส่งชื่อคุกกี้ ("ดาวเคราะห์") ที่มีค่าที่เกี่ยวข้อง ("ดาวอังคาร") ไปยังเบราว์เซอร์ ให้ใช้คำสั่งต่อไปนี้ ซึ่งจะต้องปรากฏก่อนแท็ก <HTML> ของเว็บเพจของคุณ:
<% Response.Cookies("planet")="ดาวอังคาร" %>
หากคุณต้องการใช้คุกกี้เฉพาะระหว่างเซสชันผู้ใช้ปัจจุบัน เพียงส่งคุกกี้ไปยังเบราว์เซอร์ อย่างไรก็ตาม หากคุณต้องการจดจำผู้ใช้หลังจากที่พวกเขายุติหรือรีสตาร์ทเบราว์เซอร์แล้ว คุณต้องบังคับให้เบราว์เซอร์จัดเก็บคุกกี้ไว้ในฮาร์ดไดรฟ์ของคอมพิวเตอร์ หากต้องการบันทึกคุกกี้ ให้ใช้คุณสมบัติ Expires ของ Response.Cookies และตั้งค่าวันที่เป็นวันในอนาคต:
-
Response.Cookies("planet") = "ดาวอังคาร"
Response.Cookies("planet").Expires = "1 มกราคม 1999"
-
คุกกี้สามารถมีได้หลายค่า คุกกี้ดังกล่าวเรียกว่าคุกกี้ที่จัดทำดัชนี ค่าคุกกี้แต่ละรายการได้รับการกำหนดคีย์เวิร์ด คุณสามารถตั้งค่าของคีย์เวิร์ดคุกกี้ที่ต้องการได้ ตัวอย่างเช่น:
<% Response.Cookies("planet")("Mars")="SpaceMissions" %>
หากคุกกี้ที่มีอยู่มีค่าคำหลัก แต่ Response.Cookies ไม่ได้ระบุชื่อของคำหลัก ค่าคำหลักจะถูกลบ ในทำนองเดียวกัน หากคุกกี้ที่มีอยู่ไม่มีค่าคำหลัก แต่ Response.Cookies ระบุชื่อและค่าของคำหลัก ค่าคุกกี้ที่มีอยู่จะถูกลบออก และคู่คีย์-ค่าใหม่จะถูกสร้างขึ้น
รับคุกกี้
หากต้องการรับค่าของคุกกี้ ให้ใช้คอลเลกชัน Request.Cookies ตัวอย่างเช่น หากคำขอ HTTP ของผู้ใช้ตั้งค่า planet=Mars คำสั่งต่อไปนี้จะได้รับค่า Mars:
<%= คำขอคุกกี้ ("ดาวเคราะห์") %>
ในทำนองเดียวกัน หากต้องการรับค่าคีย์เวิร์ดจากคุกกี้ที่จัดทำดัชนี ให้ใช้ชื่อคีย์เวิร์ด ตัวอย่างเช่น หากผู้ใช้ทำการร้องขอ HTTP ต่อไปนี้:
planet=ดาวอังคาร&ดาวอังคาร=ภารกิจอวกาศ
สคริปต์ต่อไปนี้จะส่งกลับค่า SpaceMissions:
<%= คำขอคุกกี้ ("ดาวเคราะห์")("ดาวอังคาร") %>
การตั้งค่าเส้นทางคุกกี้ คุกกี้แต่ละตัวที่จัดเก็บโดย ASP ในเว็บเบราว์เซอร์ของผู้ใช้ประกอบด้วยข้อมูลเส้นทาง เมื่อเบราว์เซอร์ร้องขอไฟล์ที่มีตำแหน่งเดียวกันกับเส้นทางที่ระบุในคุกกี้ เบราว์เซอร์จะส่งต่อคุกกี้ไปยังเซิร์ฟเวอร์โดยอัตโนมัติ ตามค่าเริ่มต้น เส้นทางคุกกี้จะสอดคล้องกับชื่อแอปพลิเคชันที่ประกอบด้วยแฟ้ม .asp ที่สร้างคุกกี้ตั้งแต่แรก ตัวอย่างเช่น หากไฟล์ .asp ในแอปพลิเคชันชื่อ UserApplication สร้างคุกกี้ ทุกครั้งที่เว็บเบราว์เซอร์ของผู้ใช้ดึงไฟล์ในแอปพลิเคชันนี้ เบราว์เซอร์ คุกกี้นี้จะถูกส่งต่อไปยังเซิร์ฟเวอร์ด้วย
หากต้องการประกาศเส้นทางสำหรับคุกกี้ที่แตกต่างจากเส้นทางแอปพลิเคชันเริ่มต้น ให้ใช้คุณสมบัติเส้นทางของคอลเลกชัน Response.Cookies ของ ASP ตัวอย่างเช่น สคริปต์ต่อไปนี้กำหนดเส้นทาง SalesApp/ลูกค้า/โปรไฟล์/ ให้กับคุกกี้ชื่อการซื้อ:
-
Response.Cookies("การซื้อ") = "12"
Response.Cookies("การซื้อ").Expires = "1 มกราคม 2544"
Response.Cookies("การซื้อ").Path = "/SalesApp/ลูกค้า/โปรไฟล์/"
-
เมื่อใดก็ตามที่เว็บเบราว์เซอร์ที่มีคุกกี้การซื้อร้องขอไฟล์ที่อยู่ในพาธ /SalesApp/Customer/Profiles/ หรือไดเร็กทอรีย่อย เบราว์เซอร์จะส่งต่อคุกกี้ไปยังเซิร์ฟเวอร์
เว็บเบราว์เซอร์จำนวนมาก รวมถึง Microsoft Internet Explorer 4.0 และเบราว์เซอร์ Netscape จะคงกรณีของเส้นทางคุกกี้ไว้ นั่นคือ หากกรณีของไฟล์ที่ร้องขอแตกต่างจากเส้นทางคุกกี้ที่สงวนไว้ เบราว์เซอร์จะไม่ส่งต่อคุกกี้ไปยังเซิร์ฟเวอร์ ตัวอย่างเช่น สำหรับ ASP ไดเร็กทอรีเสมือน /TRAVEL และ /travel เป็นแอปพลิเคชัน ASP เดียวกัน แต่สำหรับเบราว์เซอร์ที่รักษา URL case /TRAVEL และ /travel เป็นสองแอปพลิเคชันที่แตกต่างกัน คุณควรตรวจสอบให้แน่ใจว่า URL ทั้งหมดไปยังไฟล์ .asp มีตัวพิมพ์เหมือนกันเพื่อให้แน่ใจว่าเบราว์เซอร์ของผู้ใช้สามารถส่งต่อคุกกี้ที่เก็บไว้ได้
หากต้องการ คุณสามารถใช้คำสั่งต่อไปนี้เพื่อตั้งค่าเส้นทางคุกกี้เพื่อให้คุกกี้ถูกส่งต่อเมื่อใดก็ตามที่เว็บเบราว์เซอร์ของผู้ใช้ร้องขอไฟล์จากเซิร์ฟเวอร์ของคุณ โดยไม่คำนึงถึงแอปพลิเคชันหรือเส้นทาง:
Response.Cookies("การซื้อ").Path = "/"
อย่างไรก็ตาม โปรดทราบว่าการส่งคุกกี้ไปยังเซิร์ฟเวอร์โดยไม่แยกความแตกต่างระหว่างแอปพลิเคชันอาจสร้างปัญหาด้านความปลอดภัยหากคุกกี้มีข้อมูลที่ละเอียดอ่อนซึ่งไม่ควรเข้าถึงโดยโปรแกรมอื่นนอกเหนือจากแอปพลิเคชันที่กำหนด
รักษาสถานะโดยไม่ใช้คุกกี้ ไม่ใช่ทุกเบราว์เซอร์ที่รองรับคุกกี้ แม้ว่าจะใช้เบราว์เซอร์ที่รองรับคุกกี้ ผู้ใช้บางรายอาจต้องการปิดการสนับสนุนคุกกี้ หากแอปพลิเคชันของคุณต้องการตอบสนองต่อเบราว์เซอร์ที่ไม่รองรับคุกกี้ คุณต้องใช้การจัดการเซสชัน ASP
หากคุณไม่ได้ใช้การจัดการเซสชัน ASP คุณต้องเขียนกลไกของคุณเองเพื่อส่งข้อมูลระหว่างหน้าแอปพลิเคชันของคุณ มีสองวิธีทั่วไปในการบรรลุภารกิจนี้:
เพิ่มพารามิเตอร์ให้กับสตริงการสืบค้นของ URL ตัวอย่างเช่น:
http://MyServer/MyApp/start.asp?name=เจฟฟ์
อย่างไรก็ตาม เบราว์เซอร์บางตัวจะละทิ้งพารามิเตอร์ที่ชัดเจนที่ส่งผ่านในสตริงการสืบค้นเมื่อส่งแบบฟอร์มด้วยวิธี GET
เพิ่มค่าที่ซ่อนอยู่ลงในตาราง ตัวอย่างเช่น ตาราง HTML ต่อไปนี้ประกอบด้วยการควบคุมโดยนัย การควบคุมนี้ไม่ปรากฏในรูปแบบจริงและไม่สามารถมองเห็นได้จากเว็บเบราว์เซอร์ของผู้ใช้ ด้วยวิธีการ HTTP POST แบบฟอร์มจะส่ง ID ผู้ใช้ นอกเหนือจากข้อมูลที่ผู้ใช้ให้ไว้
<รูปแบบวิธีการ = "โพสต์" การกระทำ = "/scripts/inform.asp">
<INPUT TYPE="ข้อความ" NAME="เมือง" VALUE="">
<INPUT TYPE="ข้อความ" NAME="ประเทศ" VALUE="">
<INPUT TYPE="hidden" NAME="userid" VALUE= <%=UserIDNum(i) %>
<INPUT TYPE="ส่ง" VALUE="Enter">
วิธีการนี้กำหนดให้เป้าหมายลิงก์ทั้งหมดที่ถ่ายโอนข้อมูลผู้ใช้ต้องเข้ารหัสเป็นตาราง HTML
หากคุณไม่ได้ใช้การจัดการเซสชัน ASP ในปัจจุบัน ให้ปิดการสนับสนุนเซสชันสำหรับแอปพลิเคชันของคุณ เมื่อเปิดใช้งานเซสชัน ASP จะส่งคุกกี้ SessionID ไปยังแต่ละเบราว์เซอร์ที่ร้องขอเพจ ASP หากต้องการปิดการสนับสนุนเซสชัน ให้ล้างกล่องกาเครื่องหมายเปิดใช้งานสถานะเซสชันในหน้าคุณสมบัติตัวเลือกแอปพลิเคชันในตัวจัดการบริการอินเทอร์เน็ต
เพจ ASP ที่ไม่มีเซสชัน
ASP ยังให้ความสามารถในการสร้างเพจแบบไม่มีเซสชัน ซึ่งคุณสามารถใช้เพื่อเลื่อนการสร้างเซสชันจนกว่าผู้ใช้จะเข้าถึงเพจ ASP ที่ต้องมีการติดตามเซสชัน
เพจที่ไม่มีเซสชันจะไม่ทำหน้าที่ต่อไปนี้:
ดำเนินการขั้นตอน Session_OnStart
ส่งคุกกี้ ID เซสชัน
สร้างวัตถุเซสชัน
เข้าถึงวัตถุเซสชันในตัวหรือวัตถุที่กำหนดขอบเขตเซสชันที่สร้างด้วยแท็ก <OBJECT>
ดำเนินการตามลำดับพร้อมกับคำขอเซสชันอื่นๆ
หากต้องการกำหนดค่า .asp ให้เป็นแบบไม่มีเซสชัน ให้ใช้คำสั่งต่อไปนี้:
<%@ EnableSessionState=เท็จ %>
คุณควรวางสคริปต์นี้ไว้ที่บรรทัดแรกของไฟล์ .asp ก่อนสคริปต์อื่นๆ ตามค่าเริ่มต้น หากละเว้นการตั้งค่าสถานะนี้ การติดตามเซสชันจะถูกเปิดใช้งาน
เพจ ASP ที่ไม่มีเซสชันช่วยปรับปรุงประสิทธิภาพการตอบสนองของเซิร์ฟเวอร์โดยกำจัดการดำเนินการเซสชันที่อาจใช้เวลานาน ตัวอย่างเช่น พิจารณาสถานการณ์ต่อไปนี้: เพจ ASP ประกอบด้วยเฟรม HTML สองเฟรม เฟรม 1 และเฟรม 2 ในชุดเฟรม เฟรม 1 มีไฟล์ .asp ที่รันสคริปต์ที่ซับซ้อน ในขณะที่เฟรม 2 มีไฟล์ .html แบบธรรมดา เนื่องจาก ASP ดำเนินการคำขอเซสชันตามลำดับ (นั่นคือ ตามลำดับ) คุณจะไม่เห็นเนื้อหาของเฟรม 2 จนกว่าสคริปต์สำหรับเฟรม 1 จะถูกดำเนินการ อย่างไรก็ตาม หากคุณตั้งค่าเฟรม 1 เป็นแบบไม่มีเซสชัน คำขอ ASP จะไม่ประมวลผลแบบอนุกรมอีกต่อไป และเบราว์เซอร์ไม่จำเป็นต้องรอให้เนื้อหาของเฟรม 1 ดำเนินการเสร็จสิ้นก่อนจึงจะสามารถประมวลผลเนื้อหาของเฟรม 2 ได้
อย่างไรก็ตาม วิธีจัดการคำขอหลายรายการสำหรับเฟรมที่ต่างกันในท้ายที่สุดนั้นขึ้นอยู่กับการกำหนดค่าของเว็บเบราว์เซอร์ของผู้ใช้ เว็บเบราว์เซอร์บางตัวอาจเพิกเฉยต่อการกำหนดค่าแบบไม่มีเซสชันของไฟล์ .asp ของคุณและยังคงจัดการคำขอตามลำดับ