如何在asp.net/c#中重现丢失的会话?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在asp.net/c#中重现丢失的会话?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1601字,纯文字阅读大概需要3分钟。
内容图文
![如何在asp.net/c#中重现丢失的会话?](/upload/InfoBanner/zyjiaocheng/785/007d58cee9214396ad803072d5376511.jpg)
我的问题是,有时我的会话会随机丢失,而有时它会起作用.
现在问题是,如果以某种方式可以重现会话(我的会话是当前登录的用户).我想也许我需要在我的母版页中更改一些内容,我现在只是检查会话是否失败,还是其他内容?
码:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["UserId"] == null)
{
Response.ClearContent();
Response.Write("Not agine");
Response.End();
}
else
{
Response.Write(Session["UserId"].ToString());
}
}
Global.asax中
void Session_Start(object sender, EventArgs e) {
// Code that runs when a new session is started
if (HttpContext.Current.User != null && HttpContext.Current.User is HtUser)
{
HtUser user = (HtUser)HttpContext.Current.User;
Session["UserId"] = user.UserId;
if (user.HtDepartments.Any() && user.HtDepartments.SingleOrDefault().HtBusinessUnit != null)
{
int BusinessUnitId = user.HtDepartments.First().HtBusinessUnit.BusinessUnitId;
Session["BusinessUnnitId"] = BusinessUnitId;
}
在这里,您可以看到会话的代码
如果您需要更多东西,请告诉我!
感谢您的帮助和快速解答!
解决方法:
如果我理解正确,用户会在会议结束时失去会话(超时).
为了防止这种情况,您可以在cookie中存储其他密钥(对于每个用户的user_id和unique_hash),然后在global.asax文件中编写一个方法,该文件将触发每个页面加载,并检查会话是否过期.如果是这样,方法将使用cookie密钥通过检查DB来恢复会话.
global.asax中的示例代码:
protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
if (HttpContext.Current.Session != null)
{
// Restore session if session is lost but cookie is not
// HttpContext.Current.Session["user_id"] == null &&
if (HttpContext.Current.Request.Cookies["hash"] != null)
{
// do your job here
RestoreSessionMethod();
}
}
}
内容总结
以上是互联网集市为您收集整理的如何在asp.net/c#中重现丢失的会话?全部内容,希望文章能够帮你解决如何在asp.net/c#中重现丢失的会话?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。