2012-12-20 46 views
0

我把它設置爲120分鐘,但它不會持續那麼久。我不確定它持續多久,但我知道它不是2小時。ASP.Net MVC3 SessionState超時

<sessionState timeout="120" /> 

這只是在默認的Web.config文件,而不是在一個在瀏覽目錄,也沒有Web.Debug.config或Web.Release.config設置。

作爲默認的會話超時是20分鐘會有所作爲嗎?

+2

您的應用程序池回收也會導致會話中斷。 – Darren

+0

@JonathanWood _session狀態一般不推薦用於ASP.NET_ - 你有更多的信息嗎? – jrummell

+0

@達倫 - 如何判斷應用程序池是否正在終止會話? – MB34

回答

1

爲確保您的會話不會因w3wp.exe崩潰或應用程序池回收而中止,您應該將會話狀態移至單獨的存儲區。最簡單的是ASP.Net狀態服務器服務。請務必將主機上啓動該服務,並添加到您的web.config,而不是:

<sessionState mode="StateServer" 
    stateConnectionString="tcpip=SampleStateServer:42424" 
    cookieless="false" 
    timeout="120"/> 
+0

我將不得不與我的網絡管理員討論此事。我只是開發者。 – MB34

+0

@ MB34:它也可以用SQL服務器完成。請記住,以這種方式放入會話的任何內容都必須實現「Serializable'屬性。 –

0

我想你應該定義會話狀態模式

有不同的存在會話狀態的ASP .NET http://msdn.microsoft.com/en-us/library/ms178586(v=VS.80).aspx

在進程模式 的defaul一個是<sessionState mode="InProc" timeout="10" />,會話將清楚重建項目後

狀態服務器模式 我們可以利用這一點,但記得要打開服務 - ASP.NET狀態服務

<sessionState mode="StateServer" 
    stateConnectionString="tcpip=localhost:42424" 
    sqlConnectionString="data source=.\SQLEXPRESS; User ID=sa;Password=12345678; Integrated Security=SSPI" 
    cookieless="false" 
    timeout="2" 
/> 

SQL Server模式我們可以使用這個命令通過以後建立DB ASPSate ,請選中該網站的詳細信息 - http://www.brianstevenson.com/blog/aspstate-concurrently-running-for-net-1011-and-net-20

<sessionState mode="SQLServer" 
    stateConnectionString="tcpip=localhost:63586" 
    sqlConnectionString="data source=.\SQLEXPRESS; User ID=sa;Password=12345678; Integrated Security=SSPI" 
    cookieless="false" 
    timeout="2" 
/> 

在狀態服務器模式& SQL Server模式會話不會CLE在重建項目之後,它對開發很有幫助