2010-12-29 8 views
1

서버에 클라이언트의 일부 인증 정보를 저장해야 2 페이지를 공유 할 수 있습니다. 청춘의 문제는 방법, 세션, 쿠키, tempdata, 나는 모든 것을 시도하고, 아무것도 exampe를 들어, 작동하지 않습니다 :asp mvc 세션 변수

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"); 
    } 

내가 도우미 메서드에 세션에서 항상 null 얻을. 내가 뭘 잘못하고있어?

답변

1

대신 HttpContext.Current.Session을 사용해 보셨습니까?

ps. 당신이하는 일은 실제로 당신의 신청서에서 재검토해야하는 좋은 일이 아닙니다.

+0

어떻게해야할까요? – eba

+1

그리고 내가 해달라고 HttpContext.Current – eba

+0

그것은 당신이 뭘 원하는지에 따라 달라집니다. 그런 사소한 작업을위한 세션을 사용하는 것은 나쁩니다. 전체 mvc 프레임 워크를보다 정확하게 만들기 위해 만들어졌습니다. 당신은 자신의 역할에 기초하여 사용자를 인증하고 리다이렉션하는 행동을 취해야한다. 각 작업에는 처리 할 역할에 대한 설명이 포함될 수 있습니다. 당신은 asp.net 회원으로 더 익숙해야한다 –

0

이러한 모든 if 조건을 충족하는지 확인하십시오. 간단한 예제를보십시오 :

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(); 
} 

를 호출 CheckIn 조치를 먼저 세션에 값을 저장 한 후 Helper 액션을 호출 할 수 있습니다. 브라우저에서이 ASP.NET 응용 프로그램이나 쿠키에 대한 세션을 비활성화하지 않은 경우 올바른 값을 가져야합니다.

+0

나는 확실히 디버거가보고 있습니다. 내 응용 프로그램에서 세션을 막아 버렸거나 사용하지 않도록 설정할 수 있습니까? – eba

+1

@eba, 당신은' '를 클릭하십시오. –

+0

그리고 쿠키는 어떻습니까? 브라우저에서 활성화되어 있습니까? –