【发布时间】:2009-06-15 21:31:33
【问题描述】:
在 ASP.NET 中,每个会话都可以通过其 SessionID 变量来标识。目前,我正在开发一个项目,我希望能够识别每个单独的用户会话。换句话说,我正在寻找会话标识符或等效变量。
我查看了 Application、Environment 和 AppDomain 类,但找不到这样的变量。所以我的问题是:应该如何识别应用程序当前正在处理的会话?
【问题讨论】:
在 ASP.NET 中,每个会话都可以通过其 SessionID 变量来标识。目前,我正在开发一个项目,我希望能够识别每个单独的用户会话。换句话说,我正在寻找会话标识符或等效变量。
我查看了 Application、Environment 和 AppDomain 类,但找不到这样的变量。所以我的问题是:应该如何识别应用程序当前正在处理的会话?
【问题讨论】:
也许System.Diagnostics.Process.GetCurrentProcess().Id 可以满足您的需求?这将为您提供一个唯一标识系统上当前正在运行的进程的编号。该编号仅在进程运行时有效,当它退出时,任何其他进程在启动时都可以分配相同的编号。
【讨论】:
我不太确定我是否关注您,但如果您尝试跟踪应用程序生命周期的每个实例,您可以在适当的地方创建一个 GUID 作为实例成员。每当您觉得创建了一个新的“会话”时,您都可以创建并存储此 GUID - 可能在用户登录时(或者如果您没有登录机制,则加载主表单)。
我当然假设您有一个连接了某种服务器的多用户环境,否则我真的看不出需要会话。
【讨论】:
您可以检查 Environment 类中的一些选项,例如 Environment.UserName、Environment.MachineName 或 Environment.UserDomainName
【讨论】: