2014-11-25 132 views
-1

我的問題是sessionid,當我創建sessionid,它創建時,當我註銷它的網站它過期我的sessionid,但它沒有過期,它是給同樣的sessionid,我給我下面的代碼,請幫助我一些一。如何在mvc 4註銷網站時刪除SessionID?

session["value"]=sessionid; //it is varible name;  


Public ActionResult Logout() 
{ 
    session.remove("value"); 
    retun view(); 
} 

感謝Advance, gowtham g。

回答

0

要雙重肯定,始終做到以下幾點:

Public ActionResult Logout() 
{ 
session.remove("value"); 

session["value"] = null; 

retun view(); 
} 

分配null""到它的工作原理所有的時間。

您可以使用所有這些方法: Abandon方法應該工作:

Session.Abandon(); 

如果你想從會話使用刪除特定項目:

Session.Remove("YourItem"); 

如果你只是想清除您可以執行的值:

Session["YourItem"] = null; 

如果要清除所有鍵,請執行以下操作:

Session.Clear(); 
+0

以上將添加鍵值回一個空值,這不可能是什麼OP需要。 – CountZero 2014-11-25 13:38:16

+0

感謝您的回覆先生,會話值也傳遞註銷也會話null還顯示會話值。 – 2014-11-25 13:56:36

+0

@Gowthamg:'會話null也顯示會話值',這意味着什麼? – Saket 2014-11-25 13:58:35

0

如果你想結束會話,我會建議使用下面的代碼。

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") 
+0

感謝您的回覆先生,它不工作,它也是登錄後傳遞會話ID。 – 2014-11-25 13:51:24

+0

也許你正在設置會話ID變量,然後從會話中刪除它?理想情況下,需要更多的代碼來顯示它。而不是「返回視圖();」做「返回RedirectToAction(」索引「);」其中Index是控制器中另一個有效的操作。嘗試從其他操作中檢索會話標識時是否遇到同樣的問題? – CountZero 2014-11-25 14:16:12

+0

public ActionResult註銷() { string em =「」; em =(string)Session [「value」]; if(em!= null) Session.Remove(「value」); Session.Remove(「value1」); Session [「value」] =「」; Session [「value1」] =「」; } FormsAuthentication.SignOut(); return RedirectToAction(「Index」,「Home」); } – 2014-11-25 14:24:44