我面临的问题是静态字典似乎被“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