2013-03-29 59 views
1

我對asp.net會話管理有很好的理解。
但我對此有幾點疑問。asp.net會話技術

  1. 當會話ID被創建時。當客戶端用用戶名和密碼登錄到應用程序時。或者當客戶端嘗試訪問default.aspx頁面時。
  2. 服務器如何提供客戶端會話請求。
  3. 我們可以訪問js中的會話ID嗎?
  4. 在客戶端服務器會話創建方面,ASP.NET Web窗體和ASP.NET MVC之間有什麼區別嗎?

任何有關會話的深入思考的鏈接/書籍都會對我有所幫助。

在此先感謝! Prashant

回答

7

我對asp.net會話管理有很好的理解。

我認爲你濫用這裏的條款。 ASP.NET Session是一回事,Forms Authentication完全不同的東西。我想你在這裏正在談論表單身份驗證。

1)當會話ID被創建時。當客戶端用用戶名和密碼登錄到應用程序 時。或者當客戶端嘗試訪問default.aspx 頁面時。

當有人調用FormsAuthentication.SetAuthCookie方法時,通常會在LogOn操作驗證用戶名和密碼憑據後發生。

2)服務器如何提供客戶端會話請求。

FormsAuthentication.SetAuthCookie方法被調用並且此cookie在每個後續請求中被髮送到服務器時,表單身份驗證cookie將發送到客戶端。該cookie包含允許服務器填充IPrincipal的用戶名的加密值。

3)我們可以訪問js中的會話ID嗎?

不,表格身份驗證cookie與httponly標誌一起發出,意味着客戶端腳本無法訪問它。

4)ASP.NET Web窗體和ASP.NET MVC在客戶端服務器會話創建方面有什麼區別嗎?

它們是完全相同的。其實沒有ASP.NET MVC client server session creation這樣的概念。所有這些機制都來自ASP.NET。


現在讓我們假設你實際上談到了ASP。NET會話在你的問題。我將嘗試在這種情況下回答您的問題:

1)創建會話標識時。當客戶端用用戶名和密碼登錄到應用程序 時。或者當客戶端嘗試訪問default.aspx 頁面時。

每當某些服務器端代碼嘗試使用HttpContext.Session屬性讀取或寫入會話時。

2)服務器如何提供客戶端會話請求。

當某些服務器端腳本嘗試讀取或寫入HttpContext.Session對象時,將會話cookie發送到客戶端。這個cookie會在每個後續請求中發送到服務器。該cookie只是一個允許訪問存儲在服務器上的會話數據的標識。默認情況下會話數據存儲在內存中。但是,您也可以配置ASP.NET以將其存儲在proc或SQLServer中。有關各種會話狀態模式的更多信息,請參閱MSDN

3)我們可以訪問js中的會話ID嗎?

不,ASP.NET會話cookie與httponly標誌一起發出,意味着客戶端腳本無法訪問它。

4)ASP.NET Web窗體和ASP.NET MVC在客戶端服務器會話創建方面有什麼區別嗎?

它們是完全相同的。其實沒有ASP.NET MVC client server session creation這樣的概念。所有這些機制都來自ASP.NET。

+0

感謝您的糾正Darin – Prashant

+1

哇!非常好的解釋....... – Niventh