एमवीसी 4 सत्र टाइमआउट का पता लगाना

काम करने के लिए निम्नलिखित मानक कोड प्राप्त करने में असमर्थ। एक पूर्ण नमूना परियोजना की तलाश में या बग कैसे करें पर मदद करें। निम्नलिखित कोड ...

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
    if (filterContext.HttpContext.Session != null)
    {
        if (filterContext.HttpContext.Session.IsNewSession)
        {
            string cookie = filterContext.HttpContext.Request.Headers["Cookie"];
            if ((cookie != null) && (cookie.IndexOf("_sessionId") >= 0))
            {
                filterContext.Result = newRedirectResult("~/SessionExpired/Index");  //redirect anywhere to message user UI , never hits this breakpoint
                return;
            }
        }
    }
    base.OnActionExecuting(filterContext);

}

is standard for checking session expiration. However in my case the the line (cookie != null) && (cookie.IndexOf("_sessionId") >= 0) always returns false and thus the user is never redirected.

मैं एक नए नए जादूगर के साथ परीक्षण कर रहा हूँ एमवीसी 4 परियोजना बनाई। मुझे एक पूर्ण डाउनलोड नमूना नहीं मिल रहा है। मुझे संदेह है कि मेरी कॉन्फ़िगरेशन गलत है।


    <forms loginUrl="~/Account/Login" timeout="1" slidingExpiration="true" name=".ASPXFORMSAUTH" />  
    

कृपया सलाह दें कि यह कोड विफल क्यों है या एक पूर्ण डाउनलोड नमूना प्रोजेक्ट के साथ एक लिंक प्रदान करता है। नेट 4.5 | वीएस 2012 | स्थानीय आईआईएस वेब सर्वर, आईआईएस एक्सप्रेस

re: Detecting Session expiry on ASP.NET MVC

3

2 उत्तर

"_sessionId" में "एस" को कैपिटल करने का प्रयास करें

पसंद:

sessionCookie.IndexOf("_SessionId") >= 0)

खोज केस-संवेदी है। साथ ही, जो लिंक किया गया लेख आप उपयोग कर रहे हैं:

sessionCookie.IndexOf("ASP.NET_SessionId") >= 0)
1
जोड़ा

यह वास्तव में देर से जवाब है, लेकिन यह किसी और की मदद कर सकता है।

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

आपको निम्न कोशिश करनी चाहिए:


    <forms loginUrl="~/Account/Login" timeout="1000" slidingExpiration="true" name=".ASPXFORMSAUTH" />  
    

1
जोड़ा