asp.net避免Sessiont丟失無效的方法

來源:互聯網
上載者:User
asp.net|session 最簡單的辦法就是不要使用預設的方式也即
InProc(預設,進程內的工作階段狀態):Session儲存在IIS進程中(Web伺服器記憶體)。如果使用的是Windows   2000   Server或Windows   XP,IIS使用aspnet_wp.exe進程,如果使用的是Windows   2003   Server,IIS使用w3wp.exe。

InProc擁有最好的效能。但進程內Session很容易丟失Session資訊。如果重啟了應用程式,所有的Session資訊就會丟失。而很多原因都會導致ASP.NET應用程式的重啟。
 修改了Web.Config或Global.asax檔案,或改變了檔案的修改日期。
 修改了\bin或\App_Code目錄裡的檔案。
 防毒軟體修改了上述檔案等等

你可以考慮以下兩種方式
StateServer(進程外的工作階段狀態):Session儲存在獨立的Windows服務進程aspnet_state.exe中

如果要啟用StateServer中的Session狀態,首先要在”控制台”--“管理工具”--“服務”中,啟用ASP.NET   State   Services(ASP.NET   狀態服務),並將此服務設定為Automatic(自動啟動)

啟動ASP.NET狀態服務後,需要配置ASP.NET應用程式來使用它。
我們需要在Web.Config檔案中system.web節點中添加如下代碼
<sessionState   mode="StateServer"   stateNetworkTimeout="20"
stateConnectionString="tcpip=127.0.0.1:42424"   />
首先,mode屬性被設為StateServer。接著,stateConnectionString屬性用來指定ASP.NET狀態伺服器端的位置。連 接位置被建立為在127.0.0.1,連接埠42424。最後,stateNetworkTimeout屬性用來指定連線逾時的秒數。
需要注意的是,此時必須把對象標註為可序列化後(使用Serializable特性標記需要序列化的類)才能在服務中進行儲存。Microsoft建議所 有的開發人員在開發過程中都使用進程外的工作階段狀態,以避免項目如果切換到其他進程外的提供者或SqlServer而導致網站的錯誤。

或者使用
SqlServer:Session儲存在SqlServer資料庫的表中,可以用aspnet_regsql.exe配置它(SqlServer伺服器) 


相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。