2015-02-23 119 views
0

我正在讀的asp.net會話視圖狀態VS和閱讀我有一個疑問,即文章的文章之後的文章說,如果我創建即 會議(「用戶名」),會話變量=」用戶名」這個值被保存在網絡服務器和Web服務器上的第一個請求開始創建的cookie,並將其存儲在客戶機上,然後檢索基於存儲客戶端計算機上的Cookie值,針對特定用戶的會話變量。會話和Cookies asp.net

我的疑惑是 - 如何以及在哪裏呢會話變量存儲在服務器上。

我的理解是基於sessionID,即存儲在客戶端機器上的cookie值webserver創建了一個文件夾,併爲所有創建的會話變量創建文件並存儲數據ie對於存儲在web服務器上的所有會話變量,將只存在存儲在客戶端機器上的一個cookie-如果我在理解上面提到的內容時出錯,請糾正我的錯誤。

回答

2

ASP.Net允許您配置,您希望您的會話變量存儲。你可以使用不同的選項的文檔可以在這裏找到:

https://msdn.microsoft.com/en-us/library/ms178586%28v=vs.140%29.aspx

短的版本是,會話變量是存儲在內存中,缺省情況下您的應用程序,但你也可以使用一個單獨的進程甚至Sql Server。雖然沒有任何選項使用磁盤上的文件夾。那會很慢。如果您真的想在服務器上使用文件夾,則必須編寫自己的自定義提供程序。

+0

由於喬爾的快速反應和它回答了我的問題。如果您可以對我所做的陳述發表評論,將會感激不盡(即,對於存儲在web服務器上的所有會話變量,只有一個cookie存儲在客戶端機器上,即以sessionId的形式)。 – Harry 2015-02-23 04:47:43

+0

這在本質上是正確的,但比實際情況要複雜一些。存儲在cookie中的令牌不足以獲得對會話的訪問權限。這將是一個安全漏洞,因爲cookie很容易攔截或劫持。該服務器可以在令牌執行額外的驗證......例如,它匹配到遠程IP /端口,用戶代理,主機等 – 2015-02-23 18:03:44

+0

爲什麼我得到這個結論的原因是 - 當餅乾只在客戶端瀏覽器禁用令牌是通過網站url發送的,不知道是否通過http請求頭以編程方式發送遠程IP /端口我從來沒有實現過這個功能,這是asp.net中的內置功能嗎? – Harry 2015-02-24 04:03:01