在asp.net中使用静态对象

时间:2010-02-05 10:15:27

标签: c# asp.net static

我在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;  

它是否具有良好的吸引力,或者是否有类似的“更好”的方法来实现同样的目标?

3 个答案:

答案 0 :(得分:7)

您不应该使用静态字段替换SessionSession更灵活,更不容易出错。您可以轻松地使它在Web场中工作(您不能使用静态字段)。您可以考虑使用静态字段替换某些Application变量。重要的是要知道静态字段不提供开箱即用的任何线程安全机制,您应该手动控制(锁定)它们。

答案 1 :(得分:4)

Web服务器是多线程的。您需要同步对共享/静态对象的访问

答案 2 :(得分:3)

在这种情况下,您只需使用会话状态即可。我看到没有专业人士使用你在这里建议的模式。

如果你真的需要模仿一些静态字段。您应该使用Application州。