我们假设我有一个像这样的会话变量:
Session["Variable"] = "Assigned";
我可以为这样的用户删除此变量
Session.Remove("Variable");
我可以从所有用户中删除此变量吗?如果是,怎么样?
答案 0 :(得分:1)
我想跟你问一下我的答案"我可以......"。只因为你可以,并不意味着你应该。另外,重申上述评论,为什么要这样做呢?您的设计可能存在缺陷。除非您帮助我们理解,否则我们无法为您提供帮助。
理论上可以进行InProc会话。但是,我不推荐它,因为它不适用于农场或会话解决方案。还有一些线程安全问题你需要注意哪些问题让我回到了"为什么?"。
但是,我可以回答"我可以..."而不是"我应该..."这几乎让我感到畏缩,给出了答案。但是,使用此风险需要您自担风险,并且未经过测试。
此外,如果您使用的是缓存服务器或其他会话状态服务器,则会将其抛出窗口。 在Global.asax或IoC容器中,您可以拥有与此类似的集合:
protected void Application_Start(object sender, EventArgs e)
{
Application["allSessions"] = new List<HttpSessionState>();
}
protected void Session_Start(object sender, EventArgs e)
{
var allSessions= (List<HttpSessionState>)Application["allSessions"];
sessions.Add(this.Session);
}
protected void Session_End(object sender, EventArgs e)
{
var sessions = (List<HttpSessionState>)Application["allSessions"];
sessions.Remove(this.Session);
}
然后你可以拉出allSessions的会话变量,这是hacky恕我直言并迭代它们。
请再次阅读其他评论中的建议。请记住,有一种方法可以给猫皮肤。