2009-07-14 10 views
8

मैं इसका उपयोग करने से पहले बेस पेज क्लास में सत्र के अस्तित्व की जांच करना चाहता हूं, लेकिन मुझे पता चला है कि यदि यह अस्तित्व में नहीं है, तो यह केवल अपवाद फेंक देगा चेकिंग द्वारा: या तो एक विन्यास फाइल में या पृष्ठ निर्देश में जब enableSessionState सही पर सेट हैएएसपी .NET सत्र के लिए चेक

सेशन स्टेट केवल इस्तेमाल किया जा सकता,:

if (Session != null) 
{ 
    Session.Remove("foo"); 
} 

इस अपवाद फेंक देंगे। कृपया यह भी सुनिश्चित करें कि सिस्टम.Web.SessionStateModule या कस्टम सत्र स्थिति मॉड्यूल को अनुप्रयोग कॉन्फ़िगरेशन में \\ अनुभाग में शामिल किया गया है।

चेक बेस पेज क्लास के लोड ईवेंट में होता है जो मेरे सभी एएसपीएक्स पेज से निकलता है। ऐप में सत्र सक्षम है, और इसमें मॉड्यूल httpModules नोड में सूचीबद्ध है। यह एक ऐसा ऐप है जो आमतौर पर किसी समस्या के बिना सत्र का उपयोग करता है।

मुझे यह त्रुटि केवल कुछ पृष्ठों पर मिलती है और अधिकांश समय यह विश्वसनीय नहीं है। मुझे पता है कि मुझे त्रुटि को रोकने के लिए कुछ अलग करना चाहिए, लेकिन मुझे यकीन नहीं है कि क्या?

क्या मैं सत्र को जीवन चक्र में बहुत जल्दी बुला रहा हूं? क्या मैं सही तरीके से जांच नहीं कर रहा हूं कि सत्र उपलब्ध है या नहीं?

उत्तर

3

आप अपना चेक सुरक्षित बना सकते हैं - Page.Session एक अशक्त लपेटता Conxtxt.Session संपत्ति के आसपास की जाँच करें। तो आप Context.Session पुनर्प्राप्त करने में सक्षम होना चाहिए और जांचें कि यह शून्य है या नहीं। यदि ऐसा है तो सत्र स्थिति उपलब्ध नहीं है।

लेकिन यह, Page_Load() में उपलब्ध होना चाहिए ताकि कहीं और समस्याओं :) को अंक

0

आप किसी निश्चित सत्र चर के कारण अपवाद का अनुभव नहीं कर रहे हैं, लेकिन बस उस पृष्ठ पर सत्र तर्क का उपयोग करके जो सत्र स्थिति सर्वर के साथ संवाद करने के लिए कॉन्फ़िगर नहीं किया गया है (जो कुछ मामलों में समझ में आता है एक अलग मशीन)। यदि यह आपके लिए कोई मुद्दा नहीं है, तो यह सुनिश्चित करने पर विचार करें कि आपने हमेशा सत्रस्टेट को सत्य पर सेट किया है।

0

क्या आपने पृष्ठ निर्देशों की enableSessionState संपत्ति के लिए त्रुटि को फेंकने वाले पृष्ठों की जांच की है? आप .aspx पृष्ठ पर जाकर ऐसा कर सकते हैं और यह जांच कर सकते हैं कि enableSessionState संपत्ति सत्य/गलत पर सेट है या नहीं। यदि यह false पर सेट है, तो इसे true बनाएं।

इसके अलावा टैग <pages /> के लिए web.config फ़ाइल में जाँच, और यह अद्यतन शामिल करने के लिए -

<pages enableSessionState="true" /> 

संदर्भ: Here

+0

सक्षम सत्र स्थिति पृष्ठ वर्ग की संपत्ति होनी चाहिए? मैं केवल एक संपत्ति के रूप में enableViewState देखता हूं। –

0

HttpContext.Current.Session के लिए देखने का प्रयास करें, या यहाँ तक HttpContext.Current (मैं करता हूँ कि यूनिट परीक्षण, जब घटकों से कहा जाता है में एक बहुत ASP.NET मैं उन वार्स है, लेकिन जब मैं उन्हें NUnit से कॉल मैं उन्हें उपलब्ध है) की जरूरत नहीं है

यदि वर्तमान अनुरोध सत्र का उपयोग करता
9

आप इस प्रकार का विधि का उपयोग कर सकते हैं निर्धारित करने के लिए:

public static bool RequestHasSession 
    { 
     get 
     { 
      return (HttpContext.Current.Handler is IRequiresSessionState); 
     } 
    } 

यदि आप सुनिश्चित नहीं हैं कि आप वेब संदर्भ में भी चल रहे हैं तो आपको उस HttpContext को जांचना होगा।वर्तमान पहले शून्य नहीं था।

+0

'IReadOnlySessionState' को' IRequiresSessionState' प्राप्त होता है, इसलिए आपको केवल 'HttpContext.Current.Handler की जांच करना होगा IequequiresSessionState'। –

+1

अच्छा अवलोकन - मैंने कोड तय किया। –

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