2010-12-29 27 views
1

Müssen einige Auth Informationen des Clients auf dem Server speichern, um zwischen 2 Seiten zu teilen. Dont ganz gleich, wie, Sitzung, Cookie, TempData, habe ich versucht, alles und nichts funktioniert, für exampe:asp mvc Sitzungsvariablen

public ActionResult CheckIn(string pass) 
    { 
     if (System.Configuration.ConfigurationManager.AppSettings["pass"] == pass) 
     { 
      HttpContext.Session.Add("admin", "yes"); 
     } 
     return View(); 
    } 
public ActionResult Helper() { 
     if (HttpContext.Session["admin"] != null) 
     { 
      if (HttpContext.Session["admin"].ToString() == "yes") 
       return PartialView("InitConfig"); 
      else 
       return PartialView("StationLogics"); 
     } 
     else 
      return PartialView("StationLogics"); 
    } 

und ich bekomme immer null in der Sitzung in Hilfsmethode. was mache ich falsch?

Antwort

1

Haben Sie stattdessen HttpContext.Current.Session ausprobiert?

ps. tun, was Sie tun, ist eigentlich nicht gut desing Sie sollten es in Ihrer Bewerbung zu überdenken.

+0

wie kann ich es richtig machen? – eba

+1

und ich habe nicht HttpContext.Current – eba

+0

es hängt davon ab, was Sie tun wollen :), Sitzung für solche triviale Aufgabe ist schlecht. ganze mvc-rahmen erstellt, um es richtiger zu machen. Sie müssen eine Aktion haben, die den Benutzer autorisiert und ihn auf seine Rolle umleitet. Jede Aktion könnte beinhalten, welche Rolle sie übernimmt. Sie sollten mehr vertraut mit asp.net Mitgliedschaft sein –

0

Sind Sie sicher, dass alle diese if Bedingungen erfüllt sind? Versuchen Sie es mit einem einfachen Beispiel:

public ActionResult CheckIn() 
{ 
    Session["foo"] = "bar"; 
    return View(); 
} 

public ActionResult Helper() 
{ 
    var foo = Session["foo"]; 
    if (foo == null)   
    { 
     // this won't be null if you called the CheckIn method first 
    } 
    return View(); 
} 

Rufen Sie die CheckIn Aktion zunächst einen Wert in der Sitzung zu speichern und rufen dann die Helper Aktion. Sofern Sie die Sitzung für diese ASP.NET-Anwendung oder Cookies in Ihrem Browser nicht deaktiviert haben, sollten Sie den korrekten Wert erhalten.

+0

ich bin sicher, mit Debugger suchen. Wie kann ich in meiner App eine aktivierte oder deaktivierte Sitzung prüfen? – eba

+1

@eba, Sie können den ' 'in Ihrer web.config. –

+0

Und was ist mit Cookies? Sind sie in Ihrem Browser aktiviert? –