如果你想結束會話,我會建議使用下面的代碼。
Session.Abandon();
或者您可以調用下面的命令來刪除給定會話的所有鍵和值。
Session.Clear();
手動處理身份驗證和授權(看起來像您正在嘗試執行的操作)容易出錯並且存在風險。你有沒有考慮過使用ASP.NET Identity等框架?
http://www.asp.net/identity
聽到你們的意見聽起來有點像別的之後是怎麼回事。也許檢查global.asax是否有任何設置。
通常,解決問題的最佳方法是儘可能少的代碼將其解封,然後繼續添加功能,直到遇到問題。
如果您創建一個新的MVC項目,並執行以下操作添加到主控制器的代碼將證明,
Session.Abandon();
作品,因爲它應該。
我建議您在問題控制器中使用以下代碼,只需在Index視圖中指向註銷操作即可。通過設置中斷點並逐步完成代碼,您將看到它的工作原理。
如果你仍然有一個問題,那麼它必須在你的代碼的其他地方引起,你應該創建一個新的MVC項目。讓我的例子工作,然後從你的項目中添加代碼,直到它破壞。
控制器代碼。
public ActionResult Index()
{
var value = Session["value"];
Session["value"] = "foo";
return View();
}
public ActionResult Logout()
{
var value = Session["value"];
Session.Abandon();
value = Session["value"];
FormsAuthentication.SignOut();
return RedirectToAction("Index", "Home");
}
查看代碼
@Html.ActionLink("Logout","Logout")
以上將添加鍵值回一個空值,這不可能是什麼OP需要。 – CountZero 2014-11-25 13:38:16
感謝您的回覆先生,會話值也傳遞註銷也會話null還顯示會話值。 – 2014-11-25 13:56:36
@Gowthamg:'會話null也顯示會話值',這意味着什麼? – Saket 2014-11-25 13:58:35