[C#] è possibile salvare una variabile struttura dentro una sessione?

martedì 28 dicembre 2004 - 13.29

Alethesnake Profilo | Newbie

ciao,
ho creato in c# la seguente semplice struttura:
public struct login { public int id; public string username; public int password; }
quindi sul page load ho inizializzato una variabile tipo login con i miei dati:

public void Page_Load() { login utente; utente.id = 1; utente.username = "alethesnake"; utente.password = "miapassword"; }

la mia domanda è:
posso infilare la variabile utente di tipo login in una sessione come farei per un array, magari potendola richiamare con qualcosa tipo: Session["nomeSession"].id??

francescox78 Profilo | Junior Member

Certo che lo puoi fare,
la Session Eredita tutti i metodi e proprietà dell'oggetto che gli assegni, l'unica cosa che non ti fornisce l'aiuto quando metti il punto.


Alethesnake Profilo | Newbie

ciao francesco grazie, alla fine ho risolto almeno in parte in questo modo:
public struct infoLogin { public int id; public string uname; public string pword; } infoLogin utente; utente.id = 1; utente.uname = "Alethesnake" utente.pword = "alethesnake" //e per richiamare la sessione nella stessa pagina: infoLogin user = (infoLogin)Session["utente"]; Response.Write (user.uname)

il mio problema ora sorge quando devo richiamare la sessione da altre pagine, perché anche se ridefinisco la struttura tale e quale a quella utilizzata nella pagina di login il casting (sulla penultima riga di codice) non viene eseguito e restituisce un errore
come posso rendere la mia struttura visibile in tutto il sito?

francescox78 Profilo | Junior Member

Ciao,
il c# non è che lo conosca tanto bene prova ad assegnare alla session una variabile
esempio

se dichiari utente come var della struttura infologin :

session["VarUtente"]=utente

da tutte le pagine puoi trovare il valore scrivendo:

session["VarUtente"].id
session["VarUtente"].login
ecc
ecc

prova così e poi dimmi

francescox78 Profilo | Junior Member

sorry... :-)

Alethesnake Profilo | Newbie

ciao e grazie per le risposte.
in una pagina leggi.aspx nel codebehind ho inserito quanto segue:

public struct infoLogin
{
public int id;
public string uname;
public string pword;
}

public class leggi : Page
{
protected Label etichetta;

public void Page_Load()
{
if (Session["utente"] != null)
{
infoLogin utente = (infoLogin)HttpContext.Current.Session["utente"];

Response.Write (utente.uname + "<br/>");
Response.Write (utente.pword);
}
else
{
Response.Write ("Nessuna Sessione Attiva");
}

}
}


ma quando la sessione è piena mi viene restituito il seguente errore sulla riga del casting:
System.InvalidCastException: Specified cast is not valid.

mentre la stessa operazione funziona bene se eseguita nella stessa pagina nella quale creo la sessione

Alethesnake Profilo | Newbie

ho risolto inserendo la struttura in una dll e richiamando il namespace quando necessario.

ciao!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5