在服务器端获取唯一的会话ID/密钥
本文关键字:ID 密钥 会话 服务器端 获取 唯一 | 更新日期: 2023-09-27 17:50:26
我几乎确定我要找的东西存在,但我没有在微软文档中找到,也没有在这里找到。
我只是想得到一个唯一的ID(字符串或数字,我真的不介意)从客户端在ASP。. NET 4.5,在服务器端。我想要这个ID链接到一个会话,所以不同的每个系统,将连接到我的服务器(如多台计算机或相同的客户端与不同的浏览器),但如果一个用户打开多个选项卡在我的服务器上的同一浏览器。
我已经看过了:
-
System.Web.UI.Page.ClientID
:它是控件的名称(所以总是"__Page")。 -
System.Web.UI.Page.UniqueID
:它返回相同的 -
Session.LCID
:我不确定它指的是什么,但如果我用不同的浏览器连接到我的服务器,它是一样的。 -
Session.SessionID
:每次刷新页面或在新选项卡中打开时更改。 -
Request.AnonymousID
: Is null.
所以我所有的尝试都给了我一个每次都改变或从不改变的ID。有没有办法从session中获取一些东西?
您正在寻找的实际上是Session.SessionID
,但是它带有一个警告。
当使用基于cookie的会话状态时,ASP。NET在使用session对象之前不会为会话数据分配存储空间。因此,在访问会话对象之前,将为每个页面请求生成一个新的会话ID。如果应用程序需要整个会话的静态会话ID,则可以在应用程序的Global中实现Session_Start方法。asax文件并将数据存储在Session对象中以固定会话ID,或者您可以使用应用程序的其他部分的代码显式地将数据存储在Session对象中。
我建议使用ServerVariables集合中的REMOTE_ADDR/REMOTE_HOST值。即使用户使用多个浏览器并使用来自同一台机器的不同会话,这些值也会相同。注意,REMOTE_HOST可能并不总是有值。引用:https://msdn.microsoft.com/en-us/library/system.web.httprequest.servervariables (v = vs.110) . aspxhttps://msdn.microsoft.com/en-us/library/ms524602 (v =应用程序). aspx