2010-12-29 13 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

これらのすべての条件が満たされていることを確認してください。簡単な例で試してみてください。

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アプリケーションのセッションまたはブラウザのCookieを無効にしていない限り、正しい値を取得する必要があります。

+0

私は確かに、デバッガを見ています。私のアプリでセッションをブロックするかどうかをチェックするにはどうすればいいですか? – eba

+1

@eba、あなたは 'をあなたのweb.configに追加します。 –

+0

そしてクッキーはどうですか?彼らはあなたのブラウザで有効になっていますか? –

関連する問題