The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何讓 ASP.NET 使用 Session 資料時不要再自動消失

我們在 ASP.NET 網站使用 Session 時,常常因為 web.config 修改或更新 Bin\ 目錄下的 dll 而導致 Session 消失,Session 常常消失也挺惱人的,不是導致突然被自動登出,就是發生非預期的 Exception ... 等。 ( 有時候因為主機安裝防毒軟體也會造成 Session 資料無故消失,因為這些防毒軟體可能會誤判某檔案、某記憶體含有病毒資訊 )

這個時候我們可以將 Session 預設的模式 ( InProc ) 改成 StateServer 模式,但此時必須確認本機的 ASP.NET 狀態服務 是啟動的狀態!

  1. 請到 控制台 > 系統管理工具 > "服務"
  2. 找到 "ASP.NET 狀態服務" 或 "ASP.NET State Service"
  3. 此服務預設是屬於「停用」的狀態,請先切換到「自動」再按下「套用」再直接按「啟動」按鈕即可。

接者你可以到你的 ASP.NET 網站設定 web.config 組態檔,設定如下:

<configuration>
  <system.web>
    <sessionState mode="StateServer"
      stateConnectionString="tcpip=localhost:42424"
      cookieless="false"
      timeout="20"/>
  </system.web>
</configuration>

這樣就可以將 Session 的資料存到本機的 ASP.NET 狀態服務去了,也不會無故 Session 自動消失了。

除了這個方法外,ASP.NET 還可以用 SQL Server 儲存 Session 資料,至於設定的方法可以參考 MSDN 網頁,網址如下:

HOW TO:設定 SQL Server 以儲存 ASP.NET 工作階段狀態
http://support.microsoft.com/kb/317604

相關連結: