2012-11-06 14 views
5

मेरे एएसपीनेट एप्लिकेशन में, जब भी मेरा ब्राउज़र बंद हो जाता है या मेरा टैब (यदि मेरे ब्राउज़र में एकाधिक टैब होते हैं) सत्र को साफ़ करना चाहते हैं।जब भी ब्राउज़र asp.net में बंद हो जाता है, तो सत्र को साफ़ करना संभव है?

कृपया मुझे इस मुद्दे से बाहर निकलने के लिए गाइड ...

उत्तर

9

लघु संस्करण, सं एक सर्वर का पता लगाने अगर ग्राहक अपने ब्राउज़र बंद कर दिया है की कोई ठोस रास्ता नहीं है। यह सिर्फ वेब विकास के असीमित पैटर्न की प्रकृति है।

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

आप पृष्ठ के अनलोड() घटना पर एक जावास्क्रिप्ट पोस्टबैक रख सकते हैं, लेकिन यह पर भरोसा करते हैं न, यह हमेशा आग नहीं करता है।

+0

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

+0

कृपया जावास्क्रिप्ट दृष्टिकोण न करें, क्योंकि यह टाइमआउट सुविधा को इसकी प्रमुख सुरक्षा सुविधाओं में से एक करने से रोकता है - अगर वे अपने पीसी से दूर चलते हैं तो उपयोगकर्ता को साइन आउट करें। मैं गारंटी देता हूं कि आप ऐसा करते हैं और अपनी साइट पर एक पेशेवर सुरक्षा लेखा परीक्षा प्राप्त करते हैं, टाइमआउट की कमी को एक मुद्दे के रूप में चिह्नित किया जाएगा। – elexis

0

मुझे लगता है कि cookies बेहतर सत्र प्रबंधन के लिए यहाँ की आवश्यकता को पूरा कर सकते हैं।

इसका मतलब है कि सत्र डेटा सर्वर पर संग्रहीत नहीं किया जाना चाहिए और ताकि आप चिंता करने के बारे में सर्वर पर डेटा को साफ़ करने की जरूरत नहीं है , अपने कॉल के साथ होना चाहिए।

+0

ब्राउज़र के करीबी ईवेंट के साथ कुकीज़ को क्या करना है? यदि उपयोगकर्ता अपने ब्राउज़र को बंद कर देता है, तो कुछ भी नहीं निकाल दिया जाता है। कुकी, क्लाइंट पर, कुछ भी नहीं कर रही होगी। –

+0

@ RenéWolferinkL: इसका मतलब है कि सत्र डेटा सर्वर पर संग्रहीत नहीं किया जाना चाहिए और आपके कॉल के साथ होना चाहिए, ताकि आपको सर्वर पर डेटा साफ़ करने की चिंता न हो। –

1

जब भी आप अपना ब्राउज़र बंद करते हैं तो यह डिफ़ॉल्ट रूप से होता है, और यह केवल एएसपी.NET के लिए नहीं है। यह अधिकांश सर्वर-साइड प्रोग्रामिंग भाषाओं के लिए है जिसमें सत्र स्थिति है। असल में, जो भी कुकी जोड़ा जाता है जो समाप्ति तिथि निर्दिष्ट नहीं करता है, ब्राउज़र बंद होने पर हटा दिया जाएगा।

इस कहां लागू नहीं होता है, तब होता है जब आप एक टैब है, जो कुछ तुम पर कोई नियंत्रण नहीं होगा, क्योंकि टैब पास घटना वेब सर्वर को वापस भेज नहीं किया जाएगा है बंद कर दें।

-1

आप Global.aspx

की Session_End घटना का उपयोग कर सकते
//For Specific Session 
Session.Remove("SessionName"); 

//All the Session 
Session.Abandon(); 
+3

iShare: क्षमा करें यह ब्राउज़र बंद होने के समय आग नहीं लगेगा ... – Saravanan

+0

यह सही है - सत्र टाइमआउट अवधि (आईआईएस के लिए 20 मिनट का मानना ​​है, अगर स्पष्ट रूप से सेट नहीं किया गया है) तो कोई और अनुरोध नहीं होने पर ईवेंट आग लग जाएगा ब्राउज़र से तो यह एक अनुमान है, और उपयोगकर्ता वास्तव में आपकी साइट का उपयोग बंद होने के बाद कुछ समय लगेगा। – Jon

+0

यह केवल तभी कॉल किया जाता है जब सत्र का समय समाप्त हो जाता है। –

1

वैकल्पिक रूप से आप आप हर नई ब्राउज़र खोलने पर पिछले सत्र राज्य की जाँच करें और कर सकते हैं Session.clear() या Session.abandon() पिछले सत्र सकते हैं।

इस यकीन है कि हर बार जब आप आवेदन शुरू आप नए सत्र मिल जाएगा कर देगा।

  1. अपने .net एप्लिकेशन में बेसपेज का उपयोग करें।
  2. बेसपृष्ठ लोड पर session.sessionid की जांच करें।
  3. अधिक Inforamtion कैसे basepage में नए सत्र का पता लगाने के। BasePage.Session.Link

आशा यह स्वचालित रूप से मदद करता है संबंध Shaz सभी ब्राउज़र की

public class BasePage : Page 
{ 

      protected string mySessionId; 

      private CurrentUser _currentUser; 
      public CurrentUser _CurrentUser 
      { 
       get { return ((CurrentUser)HttpContext.Current.Session["myCurrentUser"]); } 
       set { _currentUser = value; } 
      } 


      protected override void OnLoad(EventArgs e) 
      { 

       if (Session["myCurrentUser"] != null) 
       { 
        if (_CurrentUser.ProUser) 
        { 

         mySessionId = Session.SessionID; // it means New Session 

        } 

        if (!mySessionId.IsNullOrDefault() && mySessionId != Session.SessionID) 
        { 
         Session.Abandon(); //Abandon current session and start new one     

        } 
       } 


      } 

} 
0

Yes.First स्पष्ट सत्र ब्राउज़र बंद करने पर।आप जावास्क्रिप्ट फ़ंक्शन का उपयोग करके ब्राउज़र में ब्राउज़र बंद या टैब बंद ईवेंट को अनलोड करने और अनलोड पर पहले कैप्चर करने का प्रयास कर सकते हैं। अधिकतर अनलोड ईवेंट को क्रोम, फ़ायरफ़ॉक्स, आईई 11 में ब्राउजर क्लोज इवेंट कैप्चर करता है।

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

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