在浏览器上保存唯一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?

在浏览器上保存唯一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();

我把它放在会话开始和瞧!