我几乎可以肯定我正在寻找的是什么,但我没有找到Microsoft文档,也没有在这里找到。
我只想从服务器端的ASP.NET 4.5中的客户端获取一个唯一的ID(字符串或数字,我并不介意)。我希望这个ID链接到一个会话,对于每个连接到我的服务器的系统(如多个计算机或具有不同浏览器的同一个客户端)都是不同的,但如果用户在我的服务器上的同一个浏览器上打开多个选项卡,则相同。 / p>
我已经看过了:
System.Web.UI.Page.ClientID
:这是控件的名称(所以总是“__Page”)。System.Web.UI.Page.UniqueID
:它返回相同的内容。Session.LCID
:我不确定它是指什么,但如果我用不同的浏览器连接到我的服务器,它就是一样的。Session.SessionID
:每次刷新页面或在新标签页中打开它时都会更改。Request.AnonymousID
:无效。所以我的所有尝试都给了我一个每次或永远都不会改变的ID。有没有办法从会话中得到一些东西?
答案 0 :(得分:1)
您所寻找的实际上是Session.SessionID
,但它有一个警告。
来自MSDN:
使用基于cookie的会话状态时,在使用Session对象之前,ASP.NET不会为会话数据分配存储空间。结果,为每个页面请求生成新的会话ID,直到访问会话对象。如果您的应用程序需要整个会话的静态会话ID,您可以在应用程序的Global.asax文件中实现Session_Start方法,并将数据存储在Session对象中以修复会话ID,或者您可以在您的另一部分使用代码应用程序在Session对象中显式存储数据。
答案 1 :(得分:0)
我建议使用ServerVariables集合中的REMOTE_ADDR / REMOTE_HOST值。即使用户使用多个浏览器并使用来自同一台计算机的不同会话,这些值也会具有相同的值。请注意,REMOTE_HOST可能并不总是具有值。 参考文献: https://msdn.microsoft.com/en-us/library/system.web.httprequest.servervariables(v=vs.110).aspx https://msdn.microsoft.com/en-us/library/ms524602(v=vs.90).aspx