2011-08-04 16 views
19

मैं एप्लिकेशन त्रुटि ईवेंट में सत्र आईडी पढ़ना चाहता हूं लेकिन हमेशा त्रुटि प्राप्त करें "सत्र स्थिति इस संदर्भ में उपलब्ध नहीं है"। क्यूं कर? अजीब बात यह है कि मेरे पास एक और कोड है जो एक और asp.net ऐप में है और सब कुछ ठीक काम करता है।इस स्थिति में सत्र स्थिति उपलब्ध नहीं है

void Application_Error(object sender, EventArgs e) 
{ 

     var sessionId = Session.SessionID; 
     //skipped code 

} 
+0

आप इस के लिए एक जवाब था तो क्या होगा? –

+0

http://siderite.blogspot.com/2009/01/session-state-is-not-available-in.html इसने मेरे जीवन को बचाया। – Denis

उत्तर

27

सत्र ऑब्जेक्ट उपलब्ध नहीं हो सकता है, यह त्रुटि होने पर निर्भर है।

उदाहरण के लिए यदि Begin_Request पर कोई त्रुटि हुई, तो सत्र उपलब्ध नहीं होगा क्योंकि यह अभी तक नहीं बनाया गया है।

तो सारांश में कभी-कभी यह कभी-कभी काम नहीं करेगा, जब त्रुटि हुई थी।

सत्र आईडी तक पहुंचने से पहले सत्र ऑब्जेक्ट की स्थिति की जांच करने के लिए सर्वश्रेष्ठ

HttpContext context = HttpContext.Current; 

if (context != null && context.Session != null) ... 
+1

सही नहीं है, आपकी अभिव्यक्ति हमेशा सच हो जाएगी। – Tomas

+0

धन्यवाद, अद्यतन – edge2

+2

भी HttpContext.Current शून्य हो सकता है इसलिए * if * खंड पढ़ना चाहिए: 'अगर (संदर्भ! = शून्य और संदर्भ। सत्र! = शून्य) ' – Karlth

1

एप्लिकेशन_error उन परिस्थितियों में आग लग सकता है जहां एक सत्र मौजूद नहीं है, उदाहरण के लिए जब कचरा कलेक्टर साफ हो जाता है। त्रुटि का स्रोत उपयोगकर्ता धागा नहीं हो सकता है।

बस जांचें कि सत्र पहले शून्य है या नहीं।

साइमन

2

जांच करते हैं कि एक नियंत्रण या डिजाइन भाग में इस मुद्दे को मैप किया है ग # में लापता किसी भी घटना

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