2012-03-10 13 views
5

मैं निम्नलिखित सरल हैंडलर (vissibilty sakes के लिए कुछ कोड हटा दिया, लेकिन नीचे अभी भी विफल रहता है) हैसत्र?

<%@ WebHandler Language="C#" Class="DownloadHandler" %> 
using System; 
using System.Web; 

public class DownloadHandler : IHttpHandler 
{ 
    public void ProcessRequest(HttpContext context) 
    { 
     if (context.Session["t1"] != "true") 
     { 

     } 
    } 

    public bool IsReusable 
    { 
     get 
     { 
      return false; 
     } 
    } 
} 

लाइन if (context.Session["t1"] != "true") साथ विफल हो रहा है "एक वस्तु का एक उदाहरण के लिए सेट नहीं ऑब्जेक्ट संदर्भ।" और मुझे काफी नहीं लगता कि वह क्यों है?

+0

क्या वस्तु 'शून्य' है? क्या यह 'संदर्भ' या 'संदर्भ सत्र' है? – svick

+2

क्षमा करें - मेरे अपने प्रश्न का उत्तर मिला। 'IRequiresSessionState' जोड़ा जाना चाहिए (जैसे 'पब्लिक क्लास डाउनलोड हैंडलर: IHttpHandler, IRequiresSessionState') – brother

उत्तर

11

ऐसा इसलिए है क्योंकि Session तक पहुंचने के लिए http हैंडलर के लिए आपको IRequiresSessionState इंटरफ़ेस को स्पष्ट रूप से कार्यान्वित करने की आवश्यकता है।

ध्यान रखें कि यदि आप ऐसा करते हैं तो सत्र ऑब्जेक्ट पर एक अंतर्निहित लॉकिंग होगी और आप उसी सत्र स्थिति में एक से अधिक हैंडलर नहीं कर पाएंगे।

IReadOnlySessionState इंटरफ़ेस के साथ-साथ केवल-पढ़ने के सत्र राज्य पहुंच के लिए भी है।

+0

मुझे एक ही समस्या का सामना करना पड़ रहा है, मैंने अपने हैंडलर कोड में iRequiresSessionState का उपयोग किया लेकिन फिर भी मैं सत्र मानों तक नहीं पहुंच सकता। सत्र कुंजी अभी भी 0 हैं। क्या कोई मुझे इस बारे में बता सकता है? –

संबंधित मुद्दे