2009-06-15 84 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