我有一個網絡服務器,而且我的團隊已將Web應用程序的應用程序池設置爲3,以實現靜音和性能。但是,我們偶然發現部分應用程序未完全正常工作的問題。會話狀態和應用程序池
我們認爲問題出在應用程序的這部分使用會話的地方,我們認爲當數據回發時它不會鏈接回正確的工作進程。
但是,我不確定這一點,或者我是否應該在web.config中使用SessionState。如果我是對的,模式應該是InProc,SessionState還是其他?會話中是否有超時?
有人可以請教我嗎?
我有一個網絡服務器,而且我的團隊已將Web應用程序的應用程序池設置爲3,以實現靜音和性能。但是,我們偶然發現部分應用程序未完全正常工作的問題。會話狀態和應用程序池
我們認爲問題出在應用程序的這部分使用會話的地方,我們認爲當數據回發時它不會鏈接回正確的工作進程。
但是,我不確定這一點,或者我是否應該在web.config中使用SessionState。如果我是對的,模式應該是InProc,SessionState還是其他?會話中是否有超時?
有人可以請教我嗎?
因此,您已將應用程序分成三部分放在同一臺服務器上,每臺服務器都在IIS自己的應用程序池下運行?我會挑戰背後的假設,但那不是你的問題。
我不認爲你可以做到這一點,並使用開箱即用的工具共享會話狀態。它使用站點(元數據庫)路徑作爲會話狀態「密鑰」的一部分,因此來自不同站點的會話不會發生衝突。
但是,如果你能做到這一點,你需要使用out-of-proc sessionState模式之一(StateServer或SQLServer)。
我還沒有試過以下,但他們可能會幫助你。
以下是Code Project article的鏈接,該鏈接描述了將SQL Server會話更改爲組網站和共享會話。
以下是指向ASP 101 article的鏈接,它描述了與子站點共享會話的一種方式。不知道這是否適用於您的情況與不同的應用程序池。
編輯:
啊,一個網絡花園。是的,您的工作進程不共享InProc會話數據。您需要使用外部提供商。 StateServer工作正常。您需要在服務器上啓用ASP.NET狀態服務並更新您的web.config以使用它。有一些事情要考慮它:
網上有很多資源可以幫助解決這個問題,這裏是一個例子blog post。
不完全。這部分應用程序有自己的web.config,因爲應用程序的每個部分都是在Visual Studio 2010中的解決方案中構建爲項目。在IIS上,我們爲此應用程序提供了自己的網站和應用程序池,並在應用程序池中爲其提供了它3個asp.net工作進程或Web遠程訪問。如果應用程序池被設置爲默認值,那麼它很好,並按預期工作,將其設置爲3 - 它不會。我不認爲使用SQL Server是可能的,因爲我們使用的數據庫是Oracle。 – Andy5 2011-02-15 23:09:26