2009-06-15 85 views
1

在ASP.NET中,每个会话都可以通过其SessionID变量进行标识。目前,我正在开发一个项目,我希望能够识别每个单独的用户会话。换句话说,我正在寻找会话标识符或等效变量。识别Windows窗体应用程序中的当前会话:会话ID?

我查看了应用程序,环境和AppDomain类,但找不到这样的变量。所以我的问题是:如何识别应用程序当前正在处理的会话?

回答

2

也许System.Diagnostics.Process.GetCurrentProcess().Id会覆盖您的需求?这将为您提供一个唯一标识系统当前正在运行的进程的编号。该号码仅在进程运行时有效,并且在退出时,任何其他进程在启动时可能被分配相同的号码。

+0

听起来就像是朝着正确方向迈出的一步。但是,我不能保证下次用户启动应用程序时,进程ID与第一次启动('会话')的ID不相同? – dbaw 2009-06-15 13:36:15

+0

不,理论上你可以连续两次启动应用程序并获得相同的进程ID。唯一的保证是,在给定的系统上,永远不会有两个进程同时运行同一个ID。如果您在应用程序关闭时删除与会话相关的信息,这应该不成问题。 – 2009-06-15 13:39:02

0

我不太确定我关注你,但是如果你试图跟踪每个应用程序生命周期的实例,你可以创建一个GUID作为适当的实例成员。每当你感觉到一个新的“会话”已经被创建时,你可以创建和存储这个GUID--可能在用户登录时(或者如果你没有登录机制,则加载主表单)。

我假设当然你有一个多用户的环境与某种服务器连接,否则我真的不能看到会议的需要。

0

你可以检查一些在环境类的选项,如Environment.UserName,Environment.MachineName或Environment.UserDomainName