Session 預設是存放在 IIS Process 裡面,sessionState 項目 (ASP.NET 設定結構描述),mode 屬性提供了以下幾種方式存放狀態
Session 預設是存放在 IIS Process 裡面,sessionState 項目 (ASP.NET 設定結構描述),mode 屬性提供了以下幾種方式存放狀態
InPro 是預設的狀態存放機制,是放在 IIS Process 裡面
<sessionState timeout="30" mode="InProc" />
若要把狀態改放在資料庫,也相當的簡單,這會需要用到 aspnet_regsql.exe,這要靠命令提示字元來調用它,這隻程式放在 C:\Windows\Microsoft.NET\Framework\版本號,或是透過 Developer Command 來調用它
調用說明文件:aspnet_regsql.exe –?
建立工作階段不指定 DB Name,這時候預設的 DB Name是 ASPState:aspnet_regsql.exe -S YAO-E6430 -E -ssadd -sstype p
建立工作階段指定 DB Name:aspnet_regsql.exe -S YAO-E6430 -E -ssadd -sstype c -d MY_ASPState 指定DB
這時就會看到 ASPState 資料庫已經存在並與 IIS 建立關聯
最後,在 web.config 設定 sessionState 區段
<sessionState mode="SQLServer" allowCustomSqlDatabase="true" sqlConnectionString="AspState-sqlserver" sqlCommandTimeout="60" cookieless="false" cookieName="ASP.NET_SessionId" timeout="30" /> </system.web> <connectionStrings> <add name="AspState-sqlserver" connectionString="Server=Yao-E6430;Database=你的資料庫名稱_ASPState;Integrated Security=true" /> </connectionStrings>
PS.若 mode 是用 StateServer 或是 SQLServer,物件必須要能夠被序列化,只需要在類別前加上 [Serializable] 即可
文章出自:http://www.dotblogs.com.tw/yc421206/archive/2015/10/18/153600.aspx
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET