在浏览器上保存唯一id的最佳方法
本文关键字:最佳 方法 id 唯一 浏览器 保存 | 更新日期: 2023-09-27 18:09:16
在MVC.NET的浏览器会话中保持唯一id的最佳方法是什么?
是否有一些默认的会话/cookie ID值?
在我的全局。例如,我可以创建一个新的会话["ID"],并使用它的ID属性。
一定有别的办法吧?
我试过使用
var session = HttpContext.Current.Session;
UserResearch userResearch = new UserResearch();
userResearch.SessionID = sesstion.SessionID.ToString();
但是我得到一个错误:
系统。NullReferenceException:对象引用未设置为对象的实例
我需要拉初始浏览器和点击研究基于一个用户没有登录到任何东西,所以我需要一些方法来参考他们,因此id。
我可以在sql端创建一个唯一的id,并将其存储在会话中,似乎应该有一个更直接的方式。
是否有浏览器会话id?
你的问题很可能是由在你试图访问HttpContext的代码引起的,这就是为什么你得到一个NullReference
的会话。但是,假设你解决了这个问题,这就是我解决你问题的方法。
我只是将GUID
存储在cookie中,然后像这样获取/设置它:(未测试)
public Guid SessionGUID(){
if(HttpContext.Current.Request.Cookies["SessionGUID"])
{
//return the SessionGUID
return HttpContext.Current.Request.Cookies["SessionGUID"].value as Guid;
}
else//new visit
{
//set cookie to a new random Guid
var _guid=Guid.NewGuid();
HttpCookie guidCookie = new HttpCookie("SessionGUID");
guidCookie.Value = _guid;
guidCookie.Expires = DateTime.Now.AddDays(1d);
HttpContext.Current.Response.Cookies.Add(guidCookie);
return _guid;
}
}
按照https://stackoverflow.com/users/374310/igor:谢谢!全球。asax是一个文件,其中的mvapplication类可以实现几个方法/事件处理程序,其中一些在Session不可用时被调用。Session_Start应该为你工作。
var session = HttpContext.Current.Session;
UserResearch userResearch = new UserResearch();
userResearch.SessionID = sesstion.SessionID.ToString();
我把它放在会话开始和瞧!