मुझे पता है कि जब ब्राउज़र asp.net 2.0 में सर्वर साइड पर बंद कर दिया है चाहता था। पीछे कोड में कैसे पता लगाया जाए?कैसे asp.net में सर्वर साइड पर ब्राउज़र पास पता लगाने के लिए?
उत्तर
क्लाइंट साइड स्क्रिप्ट:
< body onbeforeunload="window.open('http://www.website.com/browserclosed.aspx','mywindow','width=1,height=1');">
सर्वर साइड स्क्रिप्ट (browserclosed.aspx):
// page_load
int userId = Convert.ToInt32(request.session("userId"));
ReportBrowserClosed(userId);
// Do what you want in ReportBrowserclosed() method
संक्षिप्त उत्तर: आप सीधे ऐसा नहीं कर सकते क्योंकि http स्टेटलेस है। शायद आप कुछ AJAX सुनवाई पूलिंग, सत्र टाइमआउट पहचान और अन्य चाल का उपयोग कर सकते हैं।
अधिक स्पष्टीकरण और विचारों के लिए this question पर एक नज़र डालें। यह जावा आधारित है, लेकिन विचार भाषा अज्ञेयवादी हैं।
पहली चीज जो दिमाग में आती है वह यह है कि आप अनलोड ईवेंट को हुक करते हैं और बस अतुल्यकालिक रूप से पोस्ट करते हैं कि ब्राउज़र आपकी साइट से दूर नेविगेट किया गया है (विंडो बंद कर दिया गया है)। हालांकि, जिस तरह से HTTP का उपयोग स्टेटलेस वेब साइट बनाने के लिए किया जा रहा है, यह इस अक्षम बनाता है। आपके पास उपयोगकर्ता कनेक्टिविटी को ट्रैक करने का विश्वसनीय तरीका नहीं है।
बस पर विचार कैसे आप कई सत्रों संभाल होगा? अगर मैं कई और कई, टैब या विंडो में खुला एक ही साइट है और एक को छोड़कर सभी को बंद आप कैसे बताऊँ कि मैं अभी भी जुड़ा रहा हूँ? और इसके मजाक के लिए, कहें कि मेरा ब्राउज़र कहीं बीच में दुर्घटनाग्रस्त हो गया है।
बात यह है कि, मैं कुछ ऐसी चीज तैयार कर सकता हूं जो आपकी समस्या का समाधान करे। हालांकि, यह कभी भी भरोसेमंद नहीं होगा क्योंकि HTTP में कनेक्टिविटी के लिए अंतर्निहित नियंत्रण तंत्र नहीं है।
मुझे फॉलो अप प्रश्न के साथ इस प्रश्न का उत्तर देना होगा। ब्राउज़र विंडो बंद होने पर आपको यह जानने की आवश्यकता क्यों है?
यदि आपको कुछ संसाधन साफ करने की आवश्यकता है तो दो सर्वर साइड इवेंट्स हैं, जो एएसपी.नेट द्वारा सुविधा प्रदान की जाती हैं जिन्हें आप अधिक विश्वसनीय रूप से उपयोग कर सकते हैं। और वह Session_End
या Application_End
है।
काफी स्पष्ट सवाल क्यों आप इस की क्या ज़रूरत है है? क्या आप लॉगआउट समय या समापन समय स्टोर करना चाहते हैं? फिर सत्र समय समाप्ति में पकड़ना बेहतर होता है। क्या आप किसी अन्य पेज को रीडायरेक्ट करना चाहते हैं, फिर जावास्क्रिप्ट के पृष्ठ अनलोड ईवेंट में पकड़ने के लिए बेहतर है।
मैं ओ पी के लिए उत्तर नहीं दे सकता है, लेकिन यह करने के लिए एक आम कारण एक को रोकने के लिए है लंबे समय से चलने वाले ऑपरेशन (क्वेरी, रिपोर्ट पीढ़ी, आदि) जब उपयोगकर्ता अपने ब्राउज़र को छोड़ देता है और बंद कर देता है। – Gabe