我面臨的問題是靜態字典似乎被「response.redirect」命令清空了。ASP.NET:靜態字典在response.redirect後爲空
這裏是主要頁面的代碼:
public partial class Accueil : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ ... }
protected void _Connect_Click(object sender, EventArgs e)
{
PlayerDao.LogIn(_Pseudo.Text, _Password.Text, HttpContext.Current.Session.SessionID);
Response.Redirect("~/Game/Index.aspx", true);
}
}
登錄mehod提取物:
public static void LogIn(string pseudo, string password, string sessionId)
{
...
Player.Dict.Add(sessionId, player);
...
}
而且Player.Dict詞典:
public class Player
{
private static Dictionary<string, Player> dict = new Dictionary<string, Player>();
public static Dictionary<string, Player> Dict
{
get { return dict; }
set { dict= value; }
}
...
}
的Response.Redirect的前右,該字典仍包含在LogIn方法中添加的元素,但在Index.aspx Page_Load cod中e,它是空的。 如果有人有一個想法,請隨時,我一定犯了一個愚蠢的錯誤,但無法弄清楚。
謝謝!
難道不是HTTP協議如何工作嗎?對ASP.NET不太熟悉,但除非在應用程序服務器上運行,否則跳過頁面後將丟失內存中的任何數據。 – 2014-10-31 15:26:33
@RoyalBg是無視asp.net,這是它的工作原理。 OP需要某種持久性,如會話(如果是用戶)或數據庫(如果是全局的)。 – JonH 2014-10-31 15:33:18