Introduzione
Nel file web.config, è possibile impostare la durata della scadenza della sessione, in questo breve articolo, vedremo come impostare a run time la gestione della sessione, e nel caso che scade tale sessione, visualizzare una pagina di avviso.
Si riporta il frammento di codice relativo al file web.config la parte relativa alla sessione.
Come si vede, tramite il tag sessionestate, possiamo impostare la modalità (se database o no) la connessione, e la durata.
<sessionState
mode="SQLServer"
sqlConnectionString="data source=NomeServer;initial catalog=aspstate;user id=UserName;password=Password"
cookieless="false" allowCustomSqlDatabase="true"
timeout="20" />
Creazione del progetto.
Dopo aver aggiunto nel progetto una master page e tre pagine (una visualizzare un messaggio di sessione scaduta) nella master page, inseriamo nella parte del markup HTML, il tag head impostato a livello di server.
Come riportato qui di seguito.
<head runat="server" id="PageHead">
Stesura di codice
Fatto ciò passiamo in visualizzazione codice, nella pagina master page, si crea una proprietà denominata SessionDurataMinuti, la quale rileva dal webconfig la durata della sessione.
Si crea una proprietà nella quale si imposta la pagina in cui verrà visualizzato il messaggio di sessione scaduta.
Sempre restando nella master page, si effettua la sovrascrittura dell’evento OnPreRender, in modo che impostiamo nell’intestazione (tramite il metodo add della proprietà control dell’oggetto Head) la durata e la pagina relativa alla scadenza della sessione.
public int SessionDurataMinuti
{
get { return Session.Timeout; }
}
//proprietà che rileva il percorso della pagina per la scadenza della sessione
public string SessioneScadutaUrl
{
get {
string Url = string.Concat(Request.ApplicationPath != "/" ? Request.ApplicationPath : string.Empty, "/SessioneScaduta.aspx");
return Url;
}
}
//renderizzo alla pagina di sessione scaduta
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
this.PageHead.Controls.Add(new LiteralControl(
String.Format("<meta http-equiv='refresh' content='{0};url={1}'>",
SessionDurataMinuti*60, SessioneScadutaUrl)));
}
Conclusioni
L'articolo ha voluto fornire una tecnica per la gestione della sessione, molto utile nel caso che si costruiscono portali in cui è richiesto l'accesso.