เมื่อเร็วๆ นี้ ฉันจำเป็นต้องสร้างอินเทอร์เฟซที่ตอบสนองต่อคำขอเฉพาะ โดยจะมีการประมวลผลภายในเท่านั้น และไม่มี UI ในกรณีนี้ แน่นอนว่า IHttpHandler ใช้เพื่อปรับใช้ IHttpHandler ซึ่งสามารถลดเวลาในการโหลดการควบคุม HTML เดิมทีฉันคิดอย่างนั้น เกี่ยวกับสองวิธีที่กำหนดไว้ใน IHttpHandler, ProcessRequest(HttpContext ctx) และ IsRunable() ฉันเห็นว่ามีพารามิเตอร์อินพุตของ HttpContext ใน ProcessRequest(HttpContext ctx) ฉันคิดว่าสามารถใช้กับทั้งหมดได้ วัตถุเซิร์ฟเวอร์ แต่ต้องมีการอ้างอิงถึง HttpContext ที่อยู่ด้านหน้า แต่เกิดปัญหาขึ้น จำเป็นต้องเขียนเซสชันในส่วนหัวการประมวลผลการตอบสนอง HTTP ที่กำหนดเองนี้สามารถอ้างอิงได้โดยใช้ HttpContext แต่เซสชันไม่ทำงาน มีข้อผิดพลาดเสมอว่าวัตถุนั้นไม่ได้ถูกอ้างอิง ร้อยจริงๆ มันน่างงงวย HTTPCONTEXT แสดงรายการวัตถุเซิร์ฟเวอร์ที่สามารถใช้ได้ แต่ SESSION ไม่สามารถใช้ได้! มันยากจริงๆ ดังนั้นฉันจึงต้องใส่เนื้อหาของ HTTPHANDLER ที่ปรับแต่งแล้วลงใน WEBFORM ธรรมดา หลังจากเสร็จสิ้น ฉันบังเอิญค้นพบวิธีการใช้ SESSION ใน HTTPHANDLER แบบกำหนดเอง!
1. ขั้นแรกให้อ้างอิงเนมสเปซ System.Web.SessionState
2. หากคุณต้องการอ่านเนื้อหาของเซสชันใน HttpHandler คุณต้องใช้อินเทอร์เฟซ IReadOnlySessionState ในคลาสที่ใช้ IHttpHandler ด้วย
3. หากคุณต้องการอ่านและเขียนเนื้อหาของเซสชันใน HttpHandler คุณต้องใช้ IRquiresSessionState ในคลาสที่ใช้ IHttpHandler ด้วย
เพื่อให้สามารถใช้เซสชันได้ตามปกติใน HttpHandler แบบกำหนดเอง