2013-05-08 25 views
6

तक सत्र पर समय बचाएं क्या यह जानने का कोई तरीका है कि टाइमआउट होने से पहले सत्र ऑब्जेक्ट पर कितना समय बचा है?टाइमआउट

मुझे पता है कि वेब कॉन्फिग से वास्तविक टाइमआउट कैसे प्राप्त करें, लेकिन क्या यह जानने का कोई तरीका है कि सत्र आखिरी सक्रिय था?

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

+0

यह आप पर काम का हो सकता: http://programmerramblings.blogspot.nl/2009/08/aspnet- सत्र-टाइमआउट-नियंत्रण-jquery.html –

उत्तर

2

आप जावास्क्रिप्ट चर में सर्वर समय DateTime.Now ट्रैक कर सकते हैं।
जावास्क्रिप्ट में वर्तमान समय के विरुद्ध तुलना करें।

यदि अंतर आपकी दहलीज सीमा को हिट करता है, तो आप जावास्क्रिप्ट में एक चेतावनी संदेश दिखा सकते हैं।

बेहतर अभी भी, आप अपने सर्वर पर एक AJAX कॉल आग लगा सकते हैं, और यह आपके सर्वर टाइमआउट का विस्तार करेगा।

+0

बस इसका सुझाव देना चाहता था। Http://forums.asp.net/t/1207721.aspx/2/10 – StringBuilder

+2

जांचें क्या यह मानना ​​सुरक्षित है कि सर्वर (सिंक्रोनस या एसिंक) में किए गए प्रत्येक कॉल टाइमआउट को "रीसेट" कर देगा? – Johan

+2

हां। सर्वर से उपयोगकर्ता द्वारा कोई भी अनुरोध टाइमआउट – nunespascal

2

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

कुछ इस तरह:

"window.setTimeout('yourJSFunctionGoesHere()', " + Session.Timeout + ");"; 

आप 2 मिनट के चेतावनी देने के लिए चाहते हैं, तो पहले अपने सकता है की तरह कुछ करता है:

"window.setTimeout('yourWarningJSFunctionGoesHere()', " + Session.Timeout-2 + ");"; 
+0

यह अच्छा लग रहा है। सिवाय इसके कि मैं 'setTimeout() '; – Johan

+0

पर एक अनौपचारिक कार्य को पार करना पसंद करता हूं धन्यवाद, मुझे प्रतिनिधि की आवश्यकता है :-) – TheKingDave

+0

http://weknowgifs.com/wp-content/uploads/2013/03/christian-bale-upvote -gif.gif – Johan

2

हम web.config पर सत्र का समय & चेतावनी समय को परिभाषित करने और पृष्ठ पर बीता हुआ समय की जाँच करने के लिए टाइमर का उपयोग करके इस संभाल कर सकते हैं।

Web.Config:

<appSettings> 
    <add key="SessionWarning" value="30" /> 
</appSettings> 

<system.web> 
    <sessionState timeout="45"/> 
</system.web> 

ग्राहक पृष्ठ:

<script language="javascript" type="text/javascript"> 
    /* Page Time Out Warning Message Script */ 
    var sessionTimeoutWarning = '<%=System.Configuration.ConfigurationSettings.AppSettings["SessionWarning"].ToString()%>'; 
    var sessionTimeout = "<%= Session.Timeout %>"; 
    var sTimeout = parseInt(sessionTimeoutWarning) * 60 * 1000; 

    var timeOnPageLoad = new Date(); 
    setTimeout('SessionWarning()', sTimeout); 
    //To redirect to the home page 
    setTimeout('RedirectToWelcomePage()', parseInt(sessionTimeout) * 60 * 1000); 

    //Session Warning 
    function SessionWarning() { 
     //minutes left for expiry 
     var minutesForExpiry = (parseInt(sessionTimeout) - 
              parseInt(sessionTimeoutWarning)); 
     var message = "Your session will expire in another " + minutesForExpiry + 
           " mins! Please Save the data before the session expires"; 
     alert(message); 
     var currentTime = new Date(); 
     //time for expiry 
     var timeForExpiry = timeOnPageLoad.setMinutes(timeOnPageLoad.getMinutes() 
              + parseInt(sessionTimeout)); 

     //Current time is greater than the expiry time 
     if (Date.parse(currentTime) > timeForExpiry) { 
      alert("Session expired. You will be redirected to home page"); 
      window.location = "../Home.aspx"; 
     } 
    } 

    //Session timeout add home page where you want to redirect after session timeout 
    function RedirectToWelcomePage() { 
     alert("Session expired. You will be redirected to home page"); 
     window.location = "../Home.aspx"; 
    } 
    /* End */ 

</script>