Har ett objekt som håller koll på användardata, om inloggad etc.Lagra objekt i session
Denna tänkte jag lagra i ett session objekt. Är detta bra eller dåligt?
Hur kommer jag åt mina metoder,properties på objektet som jag lagrat i min session.
Testade med
Session["SessionInst"] .
(Company.Appli.Session.Instance)Session["SessionInst"].
Men det funkade ej, någon som har lite bra förslag?
Global.asax
protected void Session_Start(Object sender, EventArgs e)
{
if(m_Session == null)
{
m_Session = Company.Appli.Session.Instance;
}
if(!m_Session.LoggedOn)
{
m_Session.Logon();
}
Session["SessionInst"] = m_Session;
}Sv: Lagra objekt i session
((Company.Appli.Session.Instance)Session["SessionInst"]).
Kommer att funka, men jag föreslår att om du tänker hämta mer saker än 1 från ditt objekt att du först skapar en referens av rätt datatyp till objektet.
Company.Appli.Session.Instance instance = (Company.Appli.Session.Instance)Session["SessionInst"];
instance.Name;
Ett annat tips är att skapa globala konstanter för sessionsnycklarna, använder du konstanterna genom hela din applikation kan du vara säker på att du inte får några felstavningar och på det sättet problem.
För din första fråga, det är vad sessionsvariabeln är till för. Om du har avvägt att du vill cacha användardatan i asp.net i stället för att fråga efter informationen vid varje request, så är du helt rätt ute.
Men du måste vara medveten om att för varje användarsession så använder du mer minne på servern om du sparar objekt där.
Ett annat alternativ skulle kunna vara att skicka med objektet i viewstate, men det är lite dyrare.