[ASP.NET] SessionState mode set SQLServer

Session 預設是存放在 IIS Process 裡面,sessionState 項目 (ASP.NET 設定結構描述),mode 屬性提供了以下幾種方式存放狀態

 

Session 預設是存放在 IIS Process 裡面,sessionState 項目 (ASP.NET 設定結構描述),mode 屬性提供了以下幾種方式存放狀態

image

InPro 是預設的狀態存放機制,是放在 IIS Process 裡面

<sessionState timeout="30" mode="InProc" />

 

若要把狀態改放在資料庫,也相當的簡單,這會需要用到 aspnet_regsql.exe,這要靠命令提示字元來調用它,這隻程式放在 C:\Windows\Microsoft.NET\Framework\版本號,或是透過 Developer Command 來調用它

image

 

調用說明文件:aspnet_regsql.exe –?

image

 

建立工作階段不指定 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

image

 

這時就會看到 ASPState 資料庫已經存在並與 IIS 建立關聯

SNAGHTMLc724637

 

 

 

 

 

 

最後,在 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

Image result for microsoft+mvp+logo