c# - एएसपी.Net में पोस्टबैक किए बिना सत्र का समय समाप्त करें




asp.net session (2)

क्या पोस्टबैक किए बिना सत्र समय समाप्ति को रीसेट करने का कोई तरीका है?

इस परिदृश्य में, मैं सिर्फ उपयोगकर्ता से पोस्टबैक को छिपाना नहीं चाहता, मुझे टाइमबैक को आउटबैक के साथ रीसेट करना होगा।

मेरे पृष्ठ पर मुझे एक संवाद पॉपअप करने और उपयोगकर्ता को सूचित करना होगा कि उसका सत्र समाप्त हो रहा है और यदि वह इसे जीवित रखना चाहता है तो उसे एक बटन पर क्लिक करना होगा अब, जब वह उस बटन पर क्लिक करता है तो मैं पृष्ठ को पोस्ट नहीं करना चाहता क्योंकि यह डेटा के साथ समस्याएं पैदा करेगा। (मुद्दों में नहीं मिल रहा)

उत्तर के आधार पर मैंने कोड को संशोधित किया है लेकिन यह अभी भी काम नहीं कर रहा है। docs.google.com/open?id=0B-Pl5DH2W9MvMDV6SUNiTXR0Z2M


मैं जिस तरह से सोच सकता हूं, उसी तरह एक डमी। नेट पेज पर एजेक्स कॉल करना है:

function keepAlive()
{
var xmlHttp = null;

xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", "KeepAlive.aspx", false );
xmlHttp.send( null );
}

और फिर इसे इस तरह कहते हैं

<input type=button onClick='keepAlive();' >

सत्र को रीफ्रेश करने के लिए आपको कुछ कॉल करना पड़ता है - मैं सरल हैंडलर को सुझाव देता हूं कि सिर्फ एक रिक्त जीआईएफ दिखाने के लिए। यहां के लिए एक सरल कोड है:

public class JustEmptyGif : IHttpHandler ,IRequiresSessionState 
{
    // 1x1 transparent GIF
    private readonly byte[] GifData = {
        0x47, 0x49, 0x46, 0x38, 0x39, 0x61,
        0x01, 0x00, 0x01, 0x00, 0x80, 0xff,
        0x00, 0xff, 0xff, 0xff, 0x00, 0x00,
        0x00, 0x2c, 0x00, 0x00, 0x00, 0x00,
        0x01, 0x00, 0x01, 0x00, 0x00, 0x02,
        0x02, 0x44, 0x01, 0x00, 0x3b
    };  

    public void ProcessRequest (HttpContext context) 
    {
        context.Response.ContentType = "image/gif";
        context.Response.Buffer = false;
        context.Response.OutputStream.Write(GifData, 0, GifData.Length);        
    }

    public bool IsReusable 
    {
        get {
            return false;
        }
    }
}

यह कोड सिर्फ एक हेन्डलर है, EmptyImage.ashx और नोट करें कि मैंने IRequiresSessionState को शामिल किया है जो इसे सत्र कॉल करने और अद्यतन करने के लिए करता है।

अब केवल सोचना है कि आपको कुछ स्क्रिप्ट के साथ एक छिपी हुई छवि को अपडेट करना है, जैसा कि:

<img id="keepAliveIMG" width="1" height="1" alt="" src="EmptyImage.ashx?" /> 
<script>
var myImg = document.getElementById("keepAliveIMG");
    myImg.src = myImg.src.replace(/\?.*$/, '?' + Math.random());
</script>

मैंने अंत में यादृच्छिक संख्या को कैश में रखने से बचने के लिए जगह दी है और इसे फिर से पुनः लोड करने के लिए मजबूर किया है। यहां कोई पोस्ट बैक नहीं है, बस एक छोटी छवि लोड है





postback