2010-10-22 121 views
0

好吧我相信這是非常明顯的。但是當你說會話狀態被保存在內存中的「服務器」時,我們是在談論IIS還是什麼?當我想到服務器端會話狀態時,我認爲在IIS應用程序池等方面的內存。我在這裏基地或失蹤?會話狀態(服務器端)

http://msdn.microsoft.com/en-us/library/75x4ha6s.aspx

術語 「服務器」 可能意味着很多東西。確定它是「服務器端」,但服務器上的具體過程/內存/區域/應用程序是我們在談論(僅限IIS?其他?)

我希望MS會解釋他們的意思,因爲這是相對的。

具體這個,

Storing Data on the Server (in memory) 

• Session state 
• Application state 
• Profile Properties 

所以「在服務器上的」在內存中,哪些進程「在服務器上存儲」 /應用程序正在處理每一種?

+0

我沒有得到我想要的這個概率,因爲我的問題太籠統了。下面是該頁面的一個例子...在處理 o \t當下一個用戶請求一個頁面時,會創建一個新的Session對象用戶 – PositiveGuy 2010-10-23 00:00:09

+0

好吧那麼管理這個對象的IIS是什麼? – PositiveGuy 2010-10-23 00:00:32

+0

問題已經更新了更具體和清晰 – PositiveGuy 2010-10-23 00:07:19

回答

4

「當然是」服務器「邊」,但是我們在討論什麼特定的進程/內存/區域/應用程序在服務器上(僅適用於IIS?其他?)」

每個站點上運行應用程序池中的每個應用程序池是Web服務器上的進程。如果您的會話配置成在過程中,您的會話對象將被存儲在該進程的內存

+0

這就是我所設想的。工作進程/應用程序池。我相信每個應用程序池都有一個工作進程正在運行......但我需要驗證這一點。 – PositiveGuy 2010-10-23 01:23:19

+0

這是正確的,但如果你在32位的操作系統,只允許約600MB的堆。工作過程每29小時重新啓動一次,清除那裏的內存 - 如果您需要確保它不丟失(不依賴於應用程序),則不應使用inproc會話狀態, – 2011-06-27 12:55:00

4

這取決於。默認情況下,它位於工作進程內存中,但可以位於專用的狀態服務器上,也可以位於SQL或您自己的自定義提供程序中。


MSDN

ASP.NET會話狀態支持會話數據幾種不同的存儲選項。每個選項都由SessionStateMode枚舉中的值標識。下面的列表描述了可用的會話狀態模式:

  • 是InProc模式,存儲在Web服務器上存儲會話狀態。這是默認設置。

  • StateServer模式,它將會話狀態存儲在稱爲ASP.NET狀態服務的單獨進程中。這可確保在重新啓動Web應用程序時保留會話狀態,並使Web會話中的多個Web服務器可以使用會話狀態。

  • SQLServer模式將會話狀態存儲在SQL Server數據庫中。這可確保在重新啓動Web應用程序時保留會話狀態,並使Web會話中的多個Web服務器可以使用會話狀態。

  • 自定義模式,使您可以指定自定義存儲提供程序。

  • 關閉模式,禁用會話狀態。

+0

好了工作進程是IIS的一部分我相信。 – PositiveGuy 2010-10-22 23:54:18

+0

沒有請問我的問題。我問服務器上有什麼進程和內存。 – PositiveGuy 2010-10-23 01:24:34

+0

@CoffeeAddict - 你的問題的答案是我答案的第二句「默認情況下它在工作進程內存中」。根據Dustin的回答,每個應用程序池都有一個工作進程。如果您查看任務管理器,則會看到在w3wp.exe下爲IIS 7應用程序池發生的分配情況。 – jball 2010-10-23 04:42:02

0

ASP.NET只是一個框架;它是一個類的集合,並且它們執行代碼。這是爲您提供會話狀態的代碼,它將有關會話狀態的信息存儲在某些對象中,就像字典或類似語言一樣。

(在做在PROC,那麼你有狀態服務器,SQL服務器和自定義,在自定義可以是任何東西,只要有人寫一些代碼實施正確的接口)

相關問題