दिलचस्प पोस्ट
जावा में किसी ऑब्जेक्ट की स्मृति खपत क्या है? XML-SelectNodes डिफ़ॉल्ट-नेमस्पेस के साथ XmlNamespaceManager द्वारा अपेक्षित के रूप में काम नहीं कर रहा है पायथन में कम से कम यूआरएल-सुरक्षित स्ट्रिंग में एक पूर्णांक कैसे परिवर्तित करें? प्रक्रिया। प्रारंभ: आउटपुट कैसे प्राप्त करें? PHP ओपीकाचे का उपयोग कैसे करें? अजगर चर पॉइंटर्स हैं? तिथि से महीने के आखिरी दिन कैसे खोजें? पीएचपी एक्सएमएल कैसे आउटपुट अच्छा प्रारूप क्या जेपीए विनिर्देश गैर-प्राथमिक कुंजी कॉलम के संदर्भ की अनुमति देता है? क्रॉन्टाब के साथ php निष्पादित करना java.lang.NoSuchMethodError: javax.servlet.ServletContext.getContextPath () Ljava / lang / String; मुझे जीसीएम सर्वर साइड से "बेमेल सेंडरआईडी" क्यों मिलता है? सेलुलर सिग्नल की शक्ति मापना जावास्क्रिप्ट में एक अनुरोध हैडर सेट करें व्हाइटस्पेस मिलान रेगेक्स – जावा

यदि वर्तमान एएसपी.नेट सत्र निरर्थक है तो मुझे क्या करना चाहिए?

मेरे वेब अनुप्रयोग में, मैं सत्र वैरिएबल पढ़ने के लिए ऐसा कुछ करता हूं:

if (HttpContext.Current.Session != null && HttpContext.Current.Session["MyVariable"] != null) { string myVariable= (string)HttpContext.Current.Session["MyVariable"]; } 

मैं समझता हूं कि क्यों HttpContext.Current.Session ["MyVariable"] रिक्त है (इस चर को सत्र में अभी तक संग्रहीत नहीं किया गया है या सत्र कई कारणों से रीसेट कर दिया गया है) क्यों यह जांचना महत्वपूर्ण है, लेकिन मुझे जांच करने की आवश्यकता क्यों है अगर HttpContext.Current.Session रिक्त है?

मेरी समझ यह है कि सत्र स्वचालित रूप से एएसपी.नेट द्वारा निर्मित हो जाता है इसलिए एचटीटीपीटीएनटीएक्स। वर्तमान। सत्र कभी भी रिक्त नहीं होना चाहिए। क्या यह धारणा सही है? यदि यह रिक्त हो सकता है, तो क्या इसका मतलब है कि मुझे इसमें कुछ संचय करने से पहले भी जांचना चाहिए:

 if (HttpContext.Current.Session != null) { HttpContext.Current.Session["MyVariable"]="Test"; } else { // What should be done in this case (if session is null)? // Is it possible to force the session to be created if it doesn't exist? } 

वेब के समाधान से एकत्रित समाधान "यदि वर्तमान एएसपी.नेट सत्र निरर्थक है तो मुझे क्या करना चाहिए?"

हां, सत्र ऑब्जेक्ट रिक्त हो सकती है, लेकिन केवल कुछ निश्चित परिस्थितियों में, जिसे आप केवल शायद ही कभी में चलाएंगे:

  • यदि आपने सत्रस्थल एचटीएम मॉड्यूल को निष्क्रिय कर दिया है, तो सत्र को पूरी तरह से अक्षम कर दिया है
  • यदि आपका कोड HttpApplication.AcquireRequestState ईवेंट से पहले चलाता है
  • आपका कोड IHttpHandler में चलता है, जो कि या तो IRequiresSessionState या IReadOnlySessionState इंटरफ़ेस निर्दिष्ट नहीं करता है

यदि आपके पास पृष्ठों में कोड है, तो आप इस पर नहीं चलेंगे। मेरे अधिकांश एएसपी। नेट कोड बार-बार निरर्थक जाँच के बिना सत्र का उपयोग करता है। हालांकि, यह सोचने के लिए कुछ है कि क्या आप IHttpModule विकसित कर रहे हैं या अन्यथा एएसपी। नेट के ग्रेटियर विवरण में नीचे हैं।

संपादित करें

टिप्पणी के उत्तर में: सत्र स्थिति उपलब्ध है या नहीं इस पर निर्भर करता है कि क्या AcquireRequestState ईवेंट अनुरोध के लिए चलाया गया है या नहीं। यह वह जगह है जहां सत्र राज्य मॉड्यूल यह सत्र कुकी को पढ़ कर और आपके लिए सत्र चर के एपप्रोएट सेट को ढूंढकर काम करता है।

AcquireRequestState आपके पृष्ठ को नियंत्रित करने से पहले चलाता है। इसलिए यदि आप अन्य पेजिंग को स्थिर पेजों सहित, अपने पृष्ठ से बुला रहे हैं, तो आपको ठीक होना चाहिए।

अगर आपके पास स्टार्टअप के दौरान कुछ क्लासेस प्रारंभिक लॉजिक हैं, उदाहरण के लिए Application_Start ईवेंट पर या एक स्थिर कन्स्ट्रक्टर का उपयोग करके, सत्र स्थिति उपलब्ध नहीं हो सकती है यह सभी एक मौजूदा अनुरोध है और अधिग्रहण के लिए रनवे की गई है या नहीं।

साथ ही, ग्राहक ने कुकीज़ को अक्षम कर दिया है, सत्र ऑब्जेक्ट अभी भी उपलब्ध होगा – लेकिन अगले अनुरोध पर, उपयोगकर्ता एक नया खाली सत्र के साथ वापस आ जाएगा। इसका कारण यह है कि क्लाइंट को एक सत्र का स्टेटबाग दिया गया है, अगर उसके पास पहले से कोई नहीं है यदि क्लाइंट सत्र कुकी को स्थानांतरित नहीं करता है, तो हमारे पास क्लाइंट को समान पहचानने का कोई तरीका नहीं है, इसलिए उसे दोबारा बार-बार नया सौंप दिया जाएगा।

निम्नलिखित कथन पूरी तरह से सटीक नहीं है:

"इसलिए यदि आप अन्य कार्यक्षमता को कॉल कर रहे हैं, जिसमें स्थिर कक्षाएं शामिल हैं, अपने पृष्ठ से, आपको ठीक होना चाहिए"

मैं एक स्थिर विधि कह रहा हूँ जो सत्र को HttpContext.Current.Session के माध्यम से संदर्भ देता है और यह रिक्त है। हालांकि, मैं jQuery का उपयोग कर AJAX के माध्यम से एक webservice विधि के माध्यम से विधि को बुला रहा हूं।

जैसा कि मैंने यहां पाया, आप इस विधि पर एक साधारण विशेषता के साथ समस्या को ठीक कर सकते हैं, या वेब सेवा सत्र ऑब्जेक्ट का उपयोग कर सकते हैं:

हालांकि एक चाल है, सत्र विधि को किसी वेब विधि के भीतर पहुंचने के लिए, आपको सत्र स्टेट मैनेजमेंट को इस तरह सक्षम करना होगा:

[वेबमैथ ​​(EnableSession = सत्य)]

EnableSession मान को निर्दिष्ट करके, अब आपके साथ खेलने के लिए एक प्रबंधित सत्र होगा। यदि आप यह मान निर्दिष्ट नहीं करते हैं, तो आपको एक नल सत्र ऑब्जेक्ट मिलेगा, और सत्र ऑब्जेक्ट तक पहुंचने की कोशिश करते समय असफल संदर्भ अपवादों में होने की संभावना से अधिक होगा।

समाधान के लिए मैथ्यू कोजियर के लिए धन्यवाद

सिर्फ सोचा कि मैं अपने दो सेंट जोड़ूंगा

ईडी

यदि आपका सत्र उदाहरण शून्य है और आपकी 'एशक्स' फ़ाइल में है, तो बस 'IRequiresSessionState' इंटरफ़ेस को लागू करें

इस इंटरफ़ेस में कोई सदस्य नहीं है, इसलिए आपको क्लास घोषणापत्र (सी #) के बाद इंटरफेस नाम जोड़ने की जरूरत है:

 public class MyAshxClass : IHttpHandler, IRequiresSessionState 

एएसपी.नेट तकनीकी लेख

सारांश: एएसपी.नेट में, हर वेब पेज सिस्टम। वेब। यूआई पेज से निकला है। पृष्ठ वर्ग सत्र डेटा के लिए HttpSession ऑब्जेक्ट का एक उदाहरण एकत्र करता है। पृष्ठ कक्षा अनुकूलन के लिए अलग-अलग घटनाओं और तरीकों को उजागर करती है। विशेष रूप से, OnInit विधि का उपयोग पृष्ठ ऑब्जेक्ट की प्रारंभिक स्थिति सेट करने के लिए किया जाता है। यदि अनुरोध में सत्र कुकी नहीं है, तो अनुरोधकर्ता को एक नया सत्र कुकी जारी की जाएगी।

संपादित करें:

सत्र: शुरुआती के लिए एक संकल्पना

सारांश: सत्र बनाया जाता है जब उपयोगकर्ता वेब अनुप्रयोग में किसी भी पेज के लिए सर्वर पर पहला अनुरोध भेजता है, तो एप्लिकेशन सत्र बनाता है और सत्र ID को उपयोगकर्ता को प्रतिक्रिया के साथ भेजता है और क्लाइंट मशीन में एक छोटी सी कुकी के रूप में संग्रहीत होता है । इसलिए आदर्श रूप से "मशीन जो कुकीज़ अक्षम कर दी है, सत्र की जानकारी संग्रहीत नहीं की जाएगी"।