2015-05-22 76 views
2

我几乎可以肯定我在找什么,但是我没有在Microsoft文档上找到,也没有在这里找到。在服务器端获取唯一的会话ID /密钥

我只想从服务器端的ASP.NET 4.5客户端获取唯一的ID(字符串或数字,我不介意)。我希望这个ID链接到一个会话,因此每个连接到我的服务器的系统(如多台计算机或具有不同浏览器的同一客户端)的系统会有所不同,但如果用户在我的服务器上的同一浏览器上打开多个选项卡,则会发生相同的问题。

我已经看着:

  • System.Web.UI.Page.ClientID:它是控制(所以总是 “__Page”)的名称。
  • System.Web.UI.Page.UniqueID:它返回相同。
  • Session.LCID:我不确定它是指什么,但它是相同的,如果我连接到我的服务器与不同的浏览器。
  • Session.SessionID:每次刷新页面或在新选项卡中打开它时都会更改。
  • Request.AnonymousID:为空。

所以我所有的尝试都给了我一个每次都改变或者从不改变的ID。有没有办法从会话中获得某些东西?

回答

1

你在找什么实际上是Session.SessionID,但它带有一个警告。

MSDN

当使用基于cookie的会话状态,ASP.NET不直到会话对象用于分配用于会话的数据存储。因此,会为每个页面请求生成一个新的会话ID,直到访问会话对象。如果您的应用程序需要整个会话的静态会话ID,则可以在应用程序的Global.asax文件中实现Session_Start方法,并将数据存储在Session对象中以修复会话ID,或者可以在您的另一部分中使用代码应用程序显式地将数据存储在Session对象中。

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

+0

这个方法我试过:有一个问题,当多台机器连接通过管理它们的IP地址相同的VPN服务:它们具有相同的IP地址。 – Aracthor

相关问题