Come uccidere un ID sessione o sessione (ASP.NET/C#)

Come posso distruggere una sessione (sessione [“Nome”]) quando l’utente fa clic sul pulsante di disconnessione?

Sto osservando il riferimento API ASP.NET su MSDN e non sembra avere molte informazioni. Sembra piuttosto limitato. Ma non riesco a trovare altre pagine per le classi ASP.NET ecc.

Ho provato:

Session.Abandon(); e Session.Contents.Remove("Name"); nessuno dei due funziona. (Ho trovato questi in un forum da una ricerca di Google)

    Il metodo Abandon dovrebbe funzionare ( MSDN ):

     Session.Abandon(); 

    Se si desidera rimuovere un elemento specifico dall’uso della sessione ( MSDN ):

     Session.Remove("YourItem"); 

    MODIFICA: se vuoi solo cancellare un valore puoi fare:

     Session["YourItem"] = null; 

    Se vuoi cancellare tutte le chiavi fai:

     Session.Clear(); 

    Se nessuna di queste cose funziona per te, allora sta succedendo qualcosa di sospetto. Vorrei controllare per vedere dove stai assegnando il valore e verificare che non venga riassegnato dopo aver cancellato il valore.

    Controllo semplice fare:

     Session["YourKey"] = "Test"; // creates the key Session.Remove("YourKey"); // removes the key bool gone = (Session["YourKey"] == null); // tests that the remove worked 

    Session.Abandon ()

    Questo contrassegna la sessione come abbandonata, ma in quel momento la sessione non verrà abbandonata, la richiesta deve essere completata per prima.

    È anche consigliabile istruire il browser client per cancellare il valore del cookie dell’ID di sessione.

     Session.Clear(); Session.Abandon(); Response.Cookies["ASP.NET_SessionId"].Value = string.Empty; Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddMonths(-10); 

    Da quello che ho provato:

     Session.Abandon(); // Does nothing Session.Clear(); // Removes the data contained in the session Example: 001: Session["test"] = "test"; 002: Session.Abandon(); 003: Print(Session["test"]); // Outputs: "test" 

    Session.Abandon imposta solo un flag booleano nell’object session su true. Il web server di chiamata può reactjs o meno, ma NON vi è alcuna azione immediata causata da ASP. (Ho controllato me stesso con .net-Reflector)

    In effetti, puoi continuare a lavorare con la vecchia sessione, premendo il pulsante Indietro del browser una volta e continuando a navigare sul sito web normalmente.

    Quindi, per concludere: usa Session.Clear () e risparmia frustrazione.

    Nota: ho provato questo comportamento sul server di sviluppo ASP.net. L’IIS attuale potrebbe comportarsi diversamente.

    Session.Abandon() questo distruggerà i dati.

    Nota, questo non rimuoverà necessariamente il token di sessione da un utente, e lo stesso token di sessione in un momento successivo potrebbe essere rilevato e creato come una nuova sessione con lo stesso id perché è considerato un gioco leale da utilizzare.

    Uccidi una sessione come questa:

     Session.Abandon() 

    Se, tuttavia, vuoi solo svuotare la sessione, usa:

     Session.Clear() 
     Session.Abandon() 

    è quello che dovresti usare. il fatto è che dietro le quinte asp.net distruggerà la sessione ma immediatamente darà all’utente una nuova sessione sulla richiesta della prossima pagina. Quindi, se stai controllando per vedere se la sessione è andata via dopo aver chiamato abbandona sembrerà che non ha funzionato.

     Session["YourItem"] = ""; 

    Funziona alla grande nelle pagine web di .net razor.

    Session.Abandon(); non ha funzionato neanche per me

    Il modo in cui dovevo scriverlo per farlo funzionare era così. Potrebbe funzionare anche per te.

     HttpContext.Current.Session.Abandon();