2012-05-07 5 views
22

Ich habe das Sitzungszeitlimit in der Datei web.config..wenn die Sitzung Timeout im nicht Umleitung auf Login-Seite bekommen, aber ich bin geting Fehler sagen Objektreferenz nicht auf eine Instanz festgelegt.Wie überprüft man, ob Sitzung in asp.net abgelaufen ist oder nicht

kann mir jemand die lösung dafür sagen?

+2

Geben Sie Ihren Code ein. Wie überprüfen Sie den Ablauf der Sitzung? – Oded

+0

Teilen Sie auch Ihre Webkonfiguration – Deepesh

+0

Zwei verschiedene Dinge: Sitzungen beeinflussen den Authentifizierungsstatus nicht direkt. Wenn Sie FormsAuth verwenden, wird Ihr Ticketstatus ausgeführt. Also, wenn Sie die Gültigkeit Ihres Tickets im Zustand der Sitzung (das ist eine schlechte Idee, BTW) müssen, müssen Sie das manuell verwalten. – HackedByChinese

Antwort

14

Sie die HttpContext.Current.User.Identity.IsAuthenticated Eigenschaft überprüfen können, die Ihnen erlaubt, zu wissen, ob ein es derzeit authentifizierten Benutzer oder nicht.

+6

Ist der Ablauf der Sitzung vollständig auch mit dem 'IsAuthenticated' zu falsch wechseln? – toddmo

+1

Ob ein Besucher zum ersten Mal oder ein zeitlich begrenzter Benutzer "HttpContext.User.Identity" hat die gleichen Werte. – Bardicer

9

bearbeiten

Sie die IsNewSession Eigenschaft können Sie überprüfen, ob die Sitzung auf Antrag der Seite

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"); 
     } 
     } 
    } 
} 

pre

Shop Benutzer-ID in Session-Variablen erstellt wurde, wenn Benutzer loggen sich auf der Webseite ein und prüfen auf Ihrer Masterseite oder dem erstellten Basisseitenformular, ob andere Seiten Erben erhalten ... und beim Laden der Seite überprüfen Sie diese Benutzerkennung s vorhanden ist oder nicht, wenn nicht als Weiterleitungsseite

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

Danke ... aber dies kann nur für einen Session-Wert verwendet werden .. ich habe mehr Sitzungen in meinem Projekt verwendet, also möchte ich Code in der Datei web.config angegeben ... das gilt für alle Seiten – user1379439

+0

@ user1379439 - dies funktioniert für alle Sitzung nicht für einzelne ..... Sitzung erstellt als Benutzeranmeldung im System ... was willst du noch? Sie haben eine Idee über die Sitzung richtig? –

+0

@ user1379439 - Gehen Sie zu dieser URL Sie könnten bekommen, was Sie wollen ... http: //www.google.co.in/url? Q = http: //www.codeproject.com/Articles/227382/Alert-Session -Time-out-in-ASP-Net & sa = U & ei = LLKnT8PeMpDzrQe3itHRAQ & ved = 0CBIQFjAA & sig2 = NDlgZI2yyYDIaQ3C1E-HGA & usg = AFQjCNF-3O2DlOTaG5dmjBsFqR63vmh2WQ –

6

prüfen einzuloggen, wenn es null oder nicht zB ist

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

Ich lieber nicht Sitzungsvariable im Code stattdessen verwenden FormAuthentication. Sie verfügen über eine integrierte Funktionalität, um auf die in web.config angegebene Anmeldeseite umzuleiten.

Wenn Sie jedoch explizit die Sitzung überprüfen möchten, können Sie für NULL-Wert für jede Variable suchen, die Sie in der Sitzung zuvor erstellt haben, als Pranay antwortete.

Sie können Login.aspx Seite erstellen und Ihre Nachricht mitschreiben, wenn Sitzung abläuft FormAuthentication automatisch in FormAuthentication Abschnitt

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

Die Sache gegeben LoginUrl Umleitung ist, dass Sie nicht separate Seite für Anmeldung geben kann und SessionExpire, also müssen Sie einige Abschnitte in Login.aspx anzeigen/verbergen, um in beide Richtungen zu gehen.

Es gibt einen anderen Weg, um Weiterleitungsseite nach Timeout sessionexpire ohne formauthentication- Ändern> loginurl finden Sie in der untenstehenden Link hierzu: http://www.schnieds.com/2009/07/aspnet-session-expiration-redirect.html

+0

Danke..ich habe den Session Expiry Code ... Jetzt möchte ich die Nachricht sollte angezeigt werden oder eine Warnmeldung, wenn die Sitzung läuft für den Benutzer ... kennen Sie den Code dafür? – user1379439

+0

Ich habe meine Antwort geändert –

7

Verwendung Session.Contents.Count:

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

Der Code geht davon aus, dass Sie oben Mindestens eine Sitzungsvariable muss erstellt werden, wenn der Benutzer Ihre Website zum ersten Mal besucht. Wenn Sie keinen haben, verwenden Sie höchstwahrscheinlich keine Datenbank für Ihre App. Für Ihren Fall können Sie einfach eine Sitzungsvariable anhand des folgenden Beispiels manuell zuweisen.

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

Viel Glück für Sie!

2

Ich benutze die @ Adi-Lester Antwort und füge einige Methoden hinzu.

Methode, wenn Session, um zu überprüfen ist lebendig

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

Sitzung var in Seitenlade

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

erstellen Savedata Methode erstellen (aber Sie es in allen Methoden verwenden können)

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

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

Hier überprüfe ich die Sitzungswerte (zwei Werte im Textfeld auf der vorherigen Seite)

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

auf diese Weise viele Leute erkennen Sitzung abgelaufen ist oder nicht. Der folgende Code kann Ihnen helfen.

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"); 
        } 
       } 
      } 
     } 
    } 
Verwandte Themen