我在asp.net页面中使用了followign对象
private static Dictionary<string, List<Guid>> OpenNodes = new Dictionary<string, List<Guid>>();
//Page start
if(!OpenNodes.ContainsKey(Session.SessionID))
{
List<Guid> list = new List<Guid>();
OpenNodes.Add(Session.SessionID, list);
}
//User clicked on a node
Guid id = new Guid(e.Node.Value);
tmpList = OpenNodes[Session.SessionID];
tmpList.Add(id);
OpenNodes[Session.SessionID] = tmpList;
它是否具有良好的吸引力,或者是否有类似的“更好”的方法来实现同样的目标?
答案 0 :(得分:7)
您不应该使用静态字段替换Session
。 Session
更灵活,更不容易出错。您可以轻松地使它在Web场中工作(您不能使用静态字段)。您可以考虑使用静态字段替换某些Application
变量。重要的是要知道静态字段不提供开箱即用的任何线程安全机制,您应该手动控制(锁定)它们。
答案 1 :(得分:4)
Web服务器是多线程的。您需要同步对共享/静态对象的访问
答案 2 :(得分:3)
在这种情况下,您只需使用会话状态即可。我看到没有专业人士使用你在这里建议的模式。
如果你真的需要模仿一些静态字段。您应该使用Application州。