2012-05-07 15 views
22

में मैंने web.config फ़ाइल में सत्र समय निर्दिष्ट नहीं किया है .. जब सत्र टाइमआउट लॉग इन पेज पर रीडायरेक्ट नहीं हो रहा है लेकिन मुझे ऑब्जेक्ट संदर्भ कहने में त्रुटि मिल रही है एक उदाहरण पर सेट नहीं है।सत्र की अवधि समाप्त हो गई है या नहीं, एएसपीनेट

क्या कोई मुझे इस के लिए समाधान बता सकता है?

+2

अपना कोड पोस्ट करें। सत्र समाप्ति के लिए आप कैसे जांच रहे हैं? – Oded

+0

अपनी वेब कॉन्फ़िगरेशन के साथ-साथ – Deepesh

+0

साझा करें दो अलग-अलग चीज़ें: सत्र सीधे प्रमाणीकरण स्थिति को प्रभावित नहीं करते हैं। यदि आप फॉर्म्सथ का उपयोग कर रहे हैं, तो आपका टिकट स्टेटस करता है। इसलिए यदि आपको सत्र की स्थिति (जो एक बुरा विचार है, बीटीडब्ल्यू) में अपने टिकट की वैधता को सोचना है, तो आपको इसे मैन्युअल रूप से प्रबंधित करने की आवश्यकता होगी। – HackedByChinese

उत्तर

14

आप HttpContext.Current.User.Identity.IsAuthenticated प्रॉपर्टी में आप है कि क्या वहाँ एक वर्तमान में प्रमाणित पता करने की अनुमति देगा की जांच कर सकते है उपयोगकर्ता या नहीं।

+6

क्या सत्र की समाप्ति 'IsAuthenticated' के साथ पूरी तरह से समानार्थी है? – toddmo

+1

चाहे पहली बार विज़िटर या टाइम आउट उपयोगकर्ता, 'HttpContext.User.Identity' के समान मूल्य होंगे। – Bardicer

9

संपादित

आप अगर सत्र पेज

protected void Page_Load() 
{ 
    if (Context.Session != null) 
    { 
     if (Session.IsNewSession) 
     { 
     string cookieHeader = Request.Headers["Cookie"]; 
     if ((null != cookieHeader) && (cookieHeader.IndexOf("ASP.NET_SessionId") >= 0)) 
     { 
      Response.Redirect("sessionTimeout.htm"); 
     } 
     } 
    } 
} 

पूर्व के अनुरोध पर बनाया गया था की जांच करने के IsNewSession संपत्ति का उपयोग कर सकते

सत्र चर जब में

स्टोर userid उपयोगकर्ता वेबसाइट पर लॉग इन करें और अपने मास्टर पेज पर चेक करें या बेस पेज फॉर्म बनाया है, जिससे दूसरे पेज को विरासत मिलती है ... और पृष्ठ लोड में उपयोगकर्ता आईडी की जांच करें I रों वर्तमान या नहीं की तुलना में अगर प्रवेश पृष्ठ पर

if(Session["Userid"]==null) 
{ 
    //session expire redirect to login page 
} 
+0

धन्यवाद ... लेकिन इसका उपयोग केवल एक सत्र मूल्य के लिए किया जा सकता है .. मैंने अपने प्रोजेक्ट में अधिक सत्रों का उपयोग किया है, इसलिए मुझे web.config फ़ाइल में निर्दिष्ट कोड चाहिए ... जो सभी पृष्ठों पर लागू होता है – user1379439

+0

@ user1379439 - यह सभी सत्रों के लिए एकल सत्र के लिए काम नहीं करेगा ..... सत्र सिस्टम में उपयोग लॉग के रूप में बनाया गया है ... आप और क्या चाहते हैं? आपको सत्र के बारे में सही जानकारी है? –

+0

@ user1379439 - इस यूआरएल पर जाएं जो आपको मिल सकता है ... http: //www.google.co.in/url? Q = http: //www.codeproject.com/Articles/227382/Alert- सत्र टाइम-आउट में एएसपी नेट और सा = यू और Ei = LLKnT8PeMpDzrQe3itHRAQ और वेद = 0CBIQFjAA और sig2 = NDlgZI2yyYDIaQ3C1E-HGA और यूएसजी = AFQjCNF-3O2DlOTaG5dmjBsFqR63vmh2WQ –

6

चेक अनुप्रेषित अगर यह शून्य या नहीं जैसे

if(Session["mykey"] != null) 
{ 
    // Session is not expired 
} 
else 
{ 
    //Session is expired 
} 
7

मैं कोड में सत्र चर को जांचना पसंद नहीं करता बल्कि इसके बजाय फॉर्म प्रमाणीकरण का उपयोग करता हूं। Web.config में निर्दिष्ट दिए गए लॉग इन पेज पर रीडायरेक्ट करने के लिए उनके पास अंतर्निहित कार्यक्षमता है।

हालांकि यदि आप स्पष्ट रूप से सत्र की जांच करना चाहते हैं तो आप पहले सत्र में बनाए गए किसी भी चर के लिए नल मान की जांच कर सकते हैं क्योंकि प्रणय ने उत्तर दिया था।

आप Login.aspx पेज बना सकते हैं और वहाँ अपना संदेश लिख सकते हैं, जब सत्र समाप्त हो FormAuthentication स्वचालित रूप से FormAuthentication खंड में दिए गए loginUrl को अनुप्रेषित

<authentication mode="Forms"> 
    <forms loginUrl="Login.aspx" protection="All" timeout="30"> 
    </forms> 
</authentication> 

बात यह है कि आप लॉग इन और के लिए अलग पेज नहीं दे सकता है सत्र एक्स्पायर, इसलिए आपको इसे दोनों तरीकों से कार्य करने के लिए Login.aspx पर कुछ अनुभाग दिखाना/छिपाना होगा। http://www.schnieds.com/2009/07/aspnet-session-expiration-redirect.html

+0

धन्यवाद .. मुझे सत्र समाप्ति कोड मिला है ... अब मैं चाहता हूं कि संदेश प्रदर्शित होना चाहिए या सत्र में उपयोगकर्ता की समाप्ति पर एक चेतावनी संदेश ... क्या आप इसके लिए कोड जानते हैं? – user1379439

+0

मैंने अपना जवाब संशोधित कर दिया है –

7

उपयोग Session.Contents.Count:

if (Session.Contents.Count == 0) 
{ 
    Response.Write(".NET session has Expired"); 
    Response.End(); 
} 
else 
{ 
    InitializeControls(); 
} 

कोड ऊपर है कि आप मान लिया गया

एक और तरीका बदल रहा है formauthentication-> loginurl बिना समय समाप्ति के बाद पेज sessionexpire पर रीडायरेक्ट करने, इस के लिए नीचे दिए गए लिंक को देखने नहीं है जब उपयोगकर्ता पहली बार आपकी साइट पर जाता है तो कम से कम एक सत्र चर बनाया जाता है। यदि आपके पास कोई नहीं है तो संभवतः आप अपने ऐप के लिए डेटाबेस का उपयोग नहीं कर रहे हैं। आपके मामले के लिए आप नीचे दिए गए उदाहरण का उपयोग करके मैन्युअल रूप से एक सत्र चर निर्दिष्ट कर सकते हैं।

protected void Page_Load(object sender, EventArgs e) 
{ 
    Session["user_id"] = 1; 
} 

आपको शुभकामनाएँ!

2

मैं @ एडी-लेस्टर उत्तर का उपयोग करता हूं और कुछ तरीकों को जोड़ता हूं।

अगर सत्र सत्यापित करने के लिए विधि जिंदा है

public static void SessionIsAlive(HttpSessionStateBase Session) 
{ 
    if (Session.Contents.Count == 0) 
    { 
     Response.Redirect("Timeout.html"); 
    } 
    else 
    { 
     InitializeControls(); 
    } 
} 

पृष्ठ लोड

protected void Page_Load(object sender, EventArgs e) 
{ 
    Session["user_id"] = 1; 
} 

savedata पद्धति बनाएं में सत्र वर बनाएं (लेकिन आप सभी तरीकों में उपयोग कर सकते हैं)

protected void SaveData() 
{ 
    // Verify if Session is Alive 
    SessionIsAlive(Session); 

    //Save Data Process 
    // bla 
    // bla 
    // bla 
} 
1

यहां मैं सत्र मूल्यों की जांच कर रहा हूं (पिछले पृष्ठ पर टेक्स्ट बॉक्स में भरे दो मान)

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Session["sessUnit_code"] == null || Session["sessgrcSerial"] == null) 
    { 
     Response.Write("<Script Language = 'JavaScript'> alert('Go to GRC Tab and fill Unit Code and GRC Serial number first')</script>"); 
    } 
    else 
    { 

     lblUnit.Text = Session["sessUnit_code"].ToString(); 
     LblGrcSr.Text = Session["sessgrcSerial"].ToString(); 
    } 
} 
1

इस तरह से कई लोग सत्र का पता चला है या नहीं। नीचे दिया गया कोड आपकी मदद कर सकता है।

protected void Page_Init(object sender, EventArgs e) 
    { 
     if (Context.Session != null) 
     { 
      if (Session.IsNewSession) 
      { 
       HttpCookie newSessionIdCookie = Request.Cookies["ASP.NET_SessionId"]; 
       if (newSessionIdCookie != null) 
       { 
        string newSessionIdCookieValue = newSessionIdCookie.Value; 
        if (newSessionIdCookieValue != string.Empty) 
        { 
         // This means Session was timed Out and New Session was started 
         Response.Redirect("Login.aspx"); 
        } 
       } 
      } 
     } 
    } 
संबंधित मुद्दे

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