2011-08-30 92 views
2

我正在使用一個ASP.net MVC3.0應用程序,並保留當前HttpContext會話中的當前用戶信息。HttpContext.Current.Session混淆在Asp.net MVC 3.0

據我所知HttpContext.Current是每當前request.Therefore,我的會話數據應該在新request.However清除後,我可以收到當前用戶會話從數據請求通過存儲HttpContext.Current要求。爲了理解MVC 3.0中的會話管理,我做了這個樣本用於測試目的。

我的問題:如何在當前請求後接收會話數據?我非常感謝你的幫助。

public static UserAccountDto CurrentUser 
    { 
     get 
     { 
      if (HttpContext.Current == null) 
       return null; 

      if (HttpContext.Current.Session[CurrentUserSessionVariable] != null) 
       return HttpContext.Current.Session[CurrentUserSessionVariable] as UserAccountDto; 

      return null; 
     } 

     private set { HttpContext.Current.Session[CurrentUserSessionVariable] = value; } 
    } 

回答

3

HttpContext.Current一樣:

HttpContext.Current.Request 

最後一個是在每一個要求不同,第一個包含的成員像用戶,會議,服務器等是發生在許多(但並非全部)在請求後處理相同的請求。

+0

。 http://msdn.microsoft.com/en-us/library/system.web.httpcontext.current.aspx ...我很困惑。 – marvelTracker

+0

是的,但是這個_並不意味着如果你在兩個不同的請求中得到它,裏面的一切都與以前完全不同! –

+0

嗯..我同意了。謝謝 – marvelTracker

1

你所做的是正確的,你創建的會話變量將可用於創建它的所有請求。 HttpContext是您在網頁開發中發現的最大對象之一,在場景背後有很多東西。你不會失去請求之間的會話的原因是因爲服務器將保持它活着。根據微軟的說法,他們會說「獲取或設置當前HTTP請求的HttpContext對象」。在這種情況下,你會驚訝地發現會話使用了緩存的特定部分