2016-04-24 38 views
0

當用戶登錄時,我正在創建會話,會話[「用戶名」],並將其用於我的主頁面。這工作正常,當我在Visual Studio上工作,但當我在IIS 6.0上承載這個時,我的會話變爲空。 我想了很多,在web.config中包含這一點,但沒有運氣當我在IIS中託管我的網站時,會話變爲空。

<sessionState mode="InProc" timeout ="60" cookieless="false"></sessionState> 

這個問題可能是重複的,但我已經檢查了以前的答案,但我的問題沒有得到有效解決。我正在使用Oracle 11g數據庫和Asp.net 4.0框架。

回答

0

這就是問題所在:

mode="InProc" 

這意味着會話數據將被保存在內存中的進程。但是,IIS可以隨時決定清除所有會話數據以回收應用程序池。出於這個原因,您可能會考慮將此會話狀態存儲在專用存儲中。一種可能性是使用SQL服務器存儲:

model="sqlserver" 

簽出不同的sessions state stores可用。

InProc會話狀態模式只能用於開發目的,而不能用於生產。

+0

我正在使用Oracle 11g數據庫而不是sqlserver。它會爲我工作,因爲我得到的錯誤'與SQL Server建立連接時發生網絡相關或實例特定的錯誤。服務器未找到或無法訪問。驗證實例名稱是否正確,並將SQL Server配置爲允許遠程連接。 (提供程序:命名管道提供程序,錯誤:40 - 無法打開與SQL Server的連接)' –

+0

您需要指定將存儲會話的SQL數據庫的連接字符串。請閱讀我在我的答案中鏈接到的文章,其中詳細解釋瞭如何使用SqlServer會話狀態模式。不過,我懷疑這會與Oracle數據庫一起工作。如果SQL不適合您,也可以考慮使用狀態服務器模式。但是,如果狀態服務器重新啓動,會話將會丟失 - 它不像SQL那樣持久,但與內存相比要好得多。 –

相關問題