2015-05-22 75 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

相關問題