【发布时间】:2014-10-31 15:23:00
【问题描述】:
我遇到了一个关于静态字典的问题,该字典似乎被“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);
}
}
登录方法摘录:
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 代码中,它是空的。 如果有人有想法,请随意,我一定犯了一个愚蠢的错误,但无法弄清楚。
谢谢!
【问题讨论】:
-
这不就是 HTTP 协议的工作原理吗?对ASP.NET不太熟悉,但是除非你在应用服务器上运行,否则你会在页面跳转后丢失内存中的任何数据。
-
@RoyalBg 是的,不管 asp.net 是什么,它都是这样工作的。 OP 需要某种持久性,例如会话(如果它针对用户)或数据库(如果它是全局的)。
标签: c# asp.net dictionary response.redirect