في الآونة الأخيرة، أحتاج إلى إنشاء واجهة تستجيب لطلبات محددة، تتم معالجتها داخليًا فقط ولا توجد واجهة مستخدم. في هذه الحالة، بالطبع، يتم استخدام IHttpHandler لتنفيذ IHttpHandler، والذي يمكن أن يقلل وقت تحميل عناصر تحكم HTML. فيما يتعلق بالطريقتين المحددتين في IHttpHandler، ProcessRequest(HttpContext ctx) وIsRunable()، رأيت أن هناك معلمة إدخال لـ HttpContext في ProcessRequest(HttpContext ctx). كائنات الخادم، ولكنها تتطلب إشارة إلى HttpContext في المقدمة. ولكن ظهرت مشكلة. يجب كتابة الجلسة في رأس معالجة استجابة HTTP المخصص هذا. يمكن الرجوع إلى الطلبات والاستجابات الأخرى باستخدام HttpContext، ولكن هناك دائمًا خطأ في عدم الإشارة إلى الكائن إنه حقًا أمر محير. يسرد HTTPCONTEXT كائنات الخادم التي يمكن استخدامها، ولكن لا يمكن استخدام SESSION! إنه أمر صعب حقًا، لذا يجب أن أضع محتوى HTTPHANDLER المخصص في نموذج الويب العادي. بعد الانتهاء منها مباشرة، اكتشفت بالصدفة طريقة استخدام SESSION في HTTPHANDLER المخصص!
1. قم أولاً بالإشارة إلى مساحة الاسم System.Web.SessionState.
2. إذا كنت تريد قراءة محتويات الجلسة في HttpHandler، فيجب عليك أيضًا تنفيذ واجهة IReadOnlySessionState في الفئة التي تطبق IHttpHandler.
3. إذا كنت تريد قراءة وكتابة محتويات الجلسة في HttpHandler، فيجب عليك أيضًا تنفيذ IRequiresSessionState في الفئة التي تطبق IHttpHandler،
بحيث يمكن استخدام الجلسة بشكل طبيعي في HttpHandler المخصص.