共用方式為


SessionStateSection 類別

設定 Web 應用程式的工作階段狀態。

Syntax

class SessionStateSection : ConfigurationSectionWithCollection  

方法

下表列出 類別所 SessionStateSection 公開的方法。

名稱 描述
加入 (繼承自 ConfigurationSectionWithCollection.)
清除 (繼承自 ConfigurationSectionWithCollection。)
Get (繼承自 ConfigurationSectionWithCollection。)
GetAllowDefinition (繼承自 ConfigurationSection.)
GetAllowLocation (繼承自 ConfigurationSection。)
移除 (繼承自 ConfigurationSectionWithCollection。)
RevertToParent (繼承自 ConfigurationSection。)
SetAllowDefinition (繼承自 ConfigurationSection。)
SetAllowLocation (繼承自 ConfigurationSection。)

屬性

下表列出 類別所 SessionStateSection 公開的屬性。

名稱 描述
AllowCustomSqlDatabase 讀取/寫入 boolean 值。 true 如果允許使用者在 屬性中 SqlConnectionString 指定初始目錄值,則為 , false 否則為 。 預設值為 false
Cookieless 讀取/寫入 sint32 值,可設定 Cookie 如何用來識別用戶端會話。 可能的值稍後會列在一節中。 注意: 會話狀態有兩種方式可以儲存唯一識別碼,將用戶端與伺服器會話產生關聯:將 HTTP Cookie 儲存在用戶端上,或在 URL 中編碼會話識別碼。 將會話識別碼儲存在 Cookie 中較為安全,但需要用戶端瀏覽器才能支援 Cookie。 對於允許不支援 Cookie 的用戶端的應用程式,例如各種行動裝置,會話識別碼可能會儲存在 URL 中。 URL 選項有數個缺點。 它要求網站上的連結是相對的,而且頁面必須在會話開頭重新導向,且具有新的查詢字串值。 它也會公開查詢字串中的會話識別碼,可在其中用於安全性攻擊。 只有在需要支援缺少 Cookie 支援的用戶端時,才應該使用 Cookie 無模式。
CookieName 讀取/寫入 string 值,指定要用於會話識別的 HTTP Cookie 名稱。 預設值為 「ASP.NET_SessionId」。
CustomProvider 讀取/寫入 string 值,指定屬性設定 Custom 為 時 Mode 所使用之屬性的自訂提供者 Providers 名稱。
Location (繼承自 ConfigurationSection .) 索引鍵屬性。
Mode 讀取/寫入 sint32 值,指定儲存會話狀態的位置。 可能的值稍後會列在一節中。 注意: 屬性 Mode 並非必要屬性,而且可以從組態階層中的較高層級或預設值繼承。 不過,組態處理常式一律會根據區段目前的繼承值來寫出模式。
PartitionResolverType 讀取/寫入 string 值,其中包含解析程式類型的完整名稱,當 屬性設定為 或 StateServerMode ,會將會話狀態資料分割到 SQLServer 多個後端節點。 注意: 如果指定這個屬性, SqlConnectionString 則會忽略 和 StateConnectionString 屬性。 傳 PartitionResolverType 回的連接字串將會用於每個要求,以連線到適當的伺服器位置,以取得要求的其餘部分。 如果連接字串無效,ASP.NET 將會擲回與伺服器設定的連接字串無效時擲回的相同例外狀況。
Path (繼承自 ConfigurationSection .) 索引鍵屬性。
Providers ProviderSettings值,其中包含執行會話狀態相關服務的提供者名稱和類型。
RegenerateExpiredSessionId 讀取/寫入 boolean 值。 true 如果用戶端指定了過期的會話識別碼,就會重新產生會話識別碼;否則為 false 。 預設值為 false注意: 根據預設,啟用此屬性時只會重新發出無 Cookie URL。
SectionInformation (繼承自 ConfigurationSection。)
SessionIDManagerType 讀取/寫入 string 值,指定會話識別碼管理員的完整型別。
SqlCommandTimeout 讀取/寫入 datetime 值,指定使用會話狀態模式 SQL Server之 SQL 命令的逾時。 預設值為 30 秒。
SqlConnectionString 讀取/寫入 string 值,其中包含SQL Server的連接字串。 預設值為 「data source=localhost;Integrated Security=SSPI」。 當 屬性設定為 SQLServerMode ,需要這個屬性。
StateConnectionString 讀取/寫入 string 值,指定遠端儲存會話狀態時的伺服器名稱和埠。 預設值為 「tcpip=loopback:42424」。 當 屬性設定為 StateServerMode ,需要這個屬性。 注意: 請確定 ASP.NET 狀態服務正在儲存會話狀態資訊的遠端伺服器上執行。 此服務會隨 ASP.NET 一起安裝,且預設位於 [drive:]\WINDOWS\Microsoft.NET\Framework\VersionNumber\aspnet_state.exe。 根據預設,此服務會設定為手動啟動。 您必須將開始行為變更為 [自動]。
StateNetworkTimeout 讀取/寫入 datetime 值,指定 Web 服務器與狀態伺服器之間的網路連線在放棄會話之前可以保持閒置的時間,以秒為單位。 當 屬性設定為 StateServerMode ,需要這個屬性。 預設值是 10 秒。
Timeout 讀取/寫入 datetime 值,指定會話因閒置而過期的時間,以分鐘為單位。 預設值是 20 分鐘。 注意: 您無法將 Timeout 屬性設定為大於 525,601 分鐘的值, (1 年) 。
UseHostingIdentity 讀取/寫入 boolean 值。 true如果Windows 驗證和主機進程識別 (ASP.NET 或 Windows 服務身分識別) 啟用遠端連線,則為 ; false 如果會話狀態在可用時使用用戶端模擬,則為 。 預設值為 true注意:此設定只會將資料庫存取權授與 ASP.NET 背景工作進程或應用程式身分識別,而不是授與整個網域或一組網域使用者,以簡化整合式Windows 驗證的管理。

子類別

這個類別不包含子類別。

備註

當新的用戶端開始與 Web 應用程式互動時,會話識別碼會發出,並在會話有效期間與相同用戶端的所有後續要求相關聯。 此識別碼是用來維護跨要求與用戶端會話相關聯的伺服器端狀態。 類別 SessionStateSection 可控制 ASP.NET 應用程式如何代表每個用戶端建立和維護此關聯。

下表列出 屬性的可能值 Cookieless 。 預設值為 1 (UseCookies) 。

關鍵字 描述
0 UseUri 會話識別碼會內嵌為統一資源識別項 (URI) 要求中的查詢字串,而 URI 會重新導向至原始要求的 URL。 變更的 URI 要求用於會話的持續時間,因此不需要 Cookie。 注意: 當您使用模式時 UseUri ,應該將 RegenerateExpiredSessionId 屬性設定為 true 。 這可讓 Web 服務器過期並重新產生權杖,這可讓潛在的攻擊者較少時間擷取 Cookie 並取得 Web 服務器內容的存取權。 您也應該考慮將 Timeout 屬性變更為小於 20 分鐘預設值。
1 UseCookies 會話識別碼會儲存在用戶端上的 HTTP Cookie 中,在使用者與網站的連線期間內。 Cookie 會傳入用戶端與 Web 服務器之間所有要求的 HTTP 標頭,而且在追蹤會話狀態中更有效率,因為它們不需要重新導向。 此外,如果使用者離開網站以造訪另一個網站,然後返回原始網站,他們就會保留狀態。 注意: 請考慮將 Timeout 屬性變更為小於 20 分鐘的預設值,讓潛在攻擊者可以較少的時間擷取 Cookie 並存取網站內容。
2 AutoDetect 會話識別碼只有在與瀏覽器交握之後,會話識別碼才會儲存在用戶端上的 HTTP Cookie 中,確認 Cookie 可以儲存。 注意: 當您使用模式時 AutoDetect ,應該將 RegenerateExpiredSessionId 屬性設定為 true 。 這可讓 Web 服務器過期並重新產生權杖,這可讓潛在的攻擊者較少時間擷取 Cookie 並取得 Web 服務器內容的存取權。 您也應該考慮將 Timeout 屬性變更為小於 20 分鐘預設值。
3 UseDeviceProfile 如果用戶端裝置設定檔支援 Cookie,會話識別碼會儲存在用戶端上的 HTTP Cookie 中;否則,不會使用 Cookie。 如果裝置設定檔支援 Cookie,即使使用者已停用 Cookie 支援,也會使用這些 Cookie。 使用此設定可確保 Cookie 無識別碼只會與需要 (這些識別碼的用戶端搭配使用,例如行動瀏覽器) 。 注意: 當您使用模式時 UseDeviceProfile ,應該將 RegenerateExpiredSessionId 屬性設定為 true 。 這可讓 Web 服務器過期並重新產生權杖,這可讓潛在的攻擊者較少時間擷取 Cookie 並取得 Web 服務器內容的存取權。 您也應該考慮將 Timeout 屬性變更為小於 20 分鐘預設值。

下表列出 屬性的可能值 Mode 。 預設值為 1 (InProc) 。

關鍵字 描述
0 Off 工作階段狀態被暫止。
1 InProc 會話狀態會儲存在應用程式執行所在的背景工作進程中 ASP.NET 應用程式。

進程內會話狀態是最快的內建狀態儲存模式。 不過,當您在會話中儲存更多資料時,會耗用更多 Web 服務器記憶體,這可能會降低效能。

如果背景工作進程回收,進程內會話狀態資料就會遺失。 如果您的 ASP.NET 應用程式需要保留會話狀態資料,而且資料存取速度不是主要考慮,請考慮使用跨進程會話狀態模式來儲存資料。

同進程會話狀態無法在 Web 服務器陣列中使用,而沒有會話識別碼親和性配置,保證具有指定會話識別碼的所有要求都會導向至相同的網頁伺服器。 注意: ASP.NET 狀態服務 (Aspnet_state.exe) 必須執行,才能讓進程內的會話狀態運作。 此服務會隨 ASP.NET 一起安裝,且預設位於 [drive:]\WINDOWS\Microsoft.NET\Framework\VersionNumber\aspnet_state.exe。 根據預設,此服務會設定為手動啟動。 您必須將開始行為變更為 [自動]。
2 StateServer 會話狀態會使用跨進程 ASP.NET 狀態服務來儲存狀態資訊。 此設定的優點是當應用程式的背景工作進程回收時,會保留會話狀態。 如果您使用此設定,則必須在 StateConnectionString 屬性中指定連接字串。
3 SQLServer 會話狀態會使用跨進程SQL Server資料庫來儲存狀態資訊。 此設定的優點是當應用程式的背景工作進程回收時,或如果 ASP.NET 狀態服務或 Web 服務器關閉時,會保留會話狀態。 如果您使用此設定,則必須在 SqlConnectionString 屬性中指定連接字串。 注意:若要使用 SQLServe r 會話狀態模式,您必須在[drive:]\WINDOWS\Microsoft.NET\Framework\VersionNumber中執行 InstallSqlState.sql SQL 腳本 (,作為預設安裝.NET Framework安裝) SQL Server的一部分,該腳本會儲存會話狀態的電腦上。 這會使用新的預存程式建立名為 ASPState 的資料庫,並在 TempDB 資料庫中建立新的 ASPStateTempApplications 和 ASPStateTempSessions 資料表。
4 Custom 會話狀態會使用自訂資料存放區來儲存會話狀態資訊。 如果您使用此設定,您必須在 屬性中 CustomProvider 指定自訂提供者的名稱。

繼承階層架構

ConfigurationSection

ConfigurationSectionWithCollection

SessionStateSection

規格需求

類型 描述
Client - Windows Vista 上的 IIS 7.0
- Windows 7 上的 IIS 7.5
- Windows 8 上的 IIS 8.0
- Windows 10上的 IIS 10.0
伺服器 - Windows Server 2008 上的 IIS 7.0
- Windows Server 2008 R2 上的 IIS 7.5
- Windows Server 2012 上的 IIS 8.0
- Windows Server 2012 R2 上的 IIS 8.5
- Windows Server 2016上的 IIS 10.0
產品 - IIS 7.0、IIS 7.5、IIS 8.0、IIS 8.5、IIS 10.0
MOF 檔案 WebAdministration.mof

另請參閱

System.Web.Configuration.SystemWebSectionGroup.SessionState
System.Web.SessionState.SessionStateModeConfigurationSectionWithCollection 類別
ProviderSettings 類別
Web 應用程式的快速、可調整和安全會話狀態管理