首頁 > 後端開發 > C++ > 如何在 .NET 2.0 Web 窗體和 .NET 3.5 MVC2 應用程式之間共用 ASP.NET 會話狀態?

如何在 .NET 2.0 Web 窗體和 .NET 3.5 MVC2 應用程式之間共用 ASP.NET 會話狀態?

DDD
發布: 2025-01-23 21:36:11
原創
693 人瀏覽過

How Can I Share ASP.NET Session State Between a .NET 2.0 Web Forms and a .NET 3.5 MVC2 Application?

ASP.NET 中的跨應用程式會話共用:.NET 2.0 Web 表單和 .NET 3.5 MVC2 解決方案

簡介

跨多個 ASP.NET 應用程式維護一致的會話資料可以簡化資料管理和應用程式間通訊。本文解決了一個常見的挑戰:在同一台伺服器上的 .NET 2.0 Web Forms 應用程式和 .NET 3.5 MVC2 應用程式之間共用會話。

問題:會話金鑰不一致

當使用具有相同stateConnectionString設定的StateServer模式時,會話金鑰傳輸成功,但MVC應用程式無法擷取會話資料(導致空sessionKey)。

解決方案:利用 SQL Server 的本機會話狀態

建議的解決方案包括配置兩個應用程式以利用 SQL Server 的本機會話狀態管理。

設定 web.config:

修改兩個應用程式的web.config檔案如下:

<sessionState mode="SQLServer" sqlConnectionString="..."/>
登入後複製

確保指定的 SQL Server 執行個體可供兩個應用程式存取,並且存在必要的會話狀態資料庫。

調整預存程序:

調整會話狀態資料庫中的TempGetAppID預存程序以從連接字串動態檢索應用程式名稱。這允許具有匹配名稱的應用程式共享會話:

@appId int OUTPUT
AS
    ...
    -- Dynamically obtain the application name from the connection string
    DECLARE @connStrAppName nvarchar(50)
    SET @connStrAppName = APP_NAME()
    ...
登入後複製

確保機器金鑰一致:

兩個應用程式必須採用相同的 machineKey 設置,在各自的 web.config 檔案中定義:

<machineKey decryption="AES" validation="SHA1" validationKey="SOMEKEY"/>
登入後複製

透過實施這些修改,兩個應用程式都可以無縫共享會話數據,利用相同的會話金鑰並在應用程式之間保持一致的表單驗證。

以上是如何在 .NET 2.0 Web 窗體和 .NET 3.5 MVC2 應用程式之間共用 ASP.NET 會話狀態?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板