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

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

相關連結: