在服务器端获取唯一会话 ID/key

Get unique session ID/key on server side

我几乎可以肯定我要查找的内容存在,但我在 Microsoft 文档和此处均未找到。

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

我已经看过了:

所以我所有的尝试都给了我一个 ID,该 ID 每次都会更改或永远不会更改。有什么方法可以从会话中获取一些东西吗?

您要查找的实际上是 Session.SessionID,但需要注意。

来自MSDN

When using cookie-based session state, ASP.NET does not allocate storage for session data until the Session object is used. As a result, a new session ID is generated for each page request until the session object is accessed. If your application requires a static session ID for the entire session, you can either implement the Session_Start method in the application's Global.asax file and store data in the Session object to fix the session ID, or you can use code in another part of your application to explicitly store data in the Session object.

我建议使用 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