钉钉在线文档升级断网编辑、支持合同比对,会议新增等候室功能-英雄云拓展知识分享
278
2024-01-22
1)我想知道如何清除ASP.NET中的所有会话,以便每一个登录系统的用户除非再次登录,否则没法工作。
2)是不是有任何方法可以迭代所有会话,以使会话中存储的管理用户例外?
提早致谢!
问候。
您没法从另外一个会话中访问会话状态,但是您可以经过利用程序状态同享数据,并在下次经过Global.asax进行要求时使用该会话来杀死其他会话
跟踪每一个会话经过 Session_Start
在global.asax中
void Session_Start(object sender, EventArgs e){
// Code that runs when a new session is started
Session["dtmStart"] = DateTime.Now;
}
下次经过 Application_AcquireRequestState
在global.asax中,如果会话是在当前存储在利用程序状态确当前杀死时间之前开始的
void Application_AcquireRequestState(object sender, EventArgs e){
// Occurs as the first event in the HTTP pipeline chain of execution when ASP.NET responds to a request.
// Check if session should be killed
if (Application["dtmClearSessions"] != null
&& Session["dtmStart"] != null
&& (DateTime)Application["dtmClearSessions"] > (DateTime)Session["dtmStart"])
{
// Check if user is an administator
if (Application["lstAdminUserIds"] != null && Session["intMyUserId"] != null)
{
List<int> lstAdminUserIds = (List<int>)Application["lstAdminUserIds"];
int intMyUserId = (int)Session["intMyUserId"];
if (lstAdminUserIds.Contains(intMyUserId))
return;
}
Session.Abandon();
}
}
标记应当放弃会议的简单设置 Application["dtmClearSessions"] = DateTime.Now;
举例来看,经过按钮按页面上的按钮。
protected void btnKillEmAll_Click(object sender, EventArgs e){
try
{
Application["dtmClearSessions"] = DateTime.Now;
}
catch (ThreadAbortException ex) { throw ex; }
catch (Exception ex)
{
// TODO: RecordError(ex, "my_page.btnKillEmAll_Click", Request);
// TODO: show error on screen litError.Text = ex.Message;
}
}
免责声明:
本网址(www.yingxiongyun.com)发布的材料主要源于独立创作和网友匿名投稿。此处提供的所有信息仅供参考之用。我们致力于提供准确且可信的信息,但不对材料的完整性或真实性作出任何保证。用户应自行验证相关信息的正确性,并对其决策承担全部责任。对于由于信息的错误、不准确或遗漏所造成的任何损失,本网址不承担任何法律责任。本网站所展示的所有内容,如文字、图像、标志、音频、视频、软件和程序等的版权均属于原创作者。如果任何组织或个人认为网站内容可能侵犯其知识产权,或包含不准确之处,请即刻联系我们进行相应处理。
发表评论
暂时没有评论,来抢沙发吧~