Asp.net
asp.net 會話狀態模式“SQLServer”
“我的網站是實時的。這個問題與在實時伺服器上配置會話超時有關,而不是在本地主機中。”
我有一個會話過期太快的問題。僅在 2-5 分鐘內連結。我嘗試了很多東西,最後決定將會話儲存在“SQL Server”模式
在我的 web.config 文件中,我有以下編碼:
<sessionState mode="SQLServer" cookieless="false" timeout="45" sqlConnectionString="data source=xxx.xx.xx.xxx;uid=xxxxxxx;pwd=xxxxxxxx"/>我擁有伺服器上 ASPState 表中所需的所有表。您可以從下圖中看到它。
但是當我執行我的應用程序時,它會引發以下錯誤:
“無法使用 SQL Server,因為 SQL Server 上沒有安裝 ASP.NET 2.0 版會話狀態,或者 ASP.NET 沒有執行 dbo.TempGetVersion 儲存過程的權限。如果 ASP.NET 會話狀態架構沒有已安裝,請安裝 ASP.NET 會話狀態 SQL Server 2.0 或更高版本。如果已安裝架構,請將 dbo.TempGetVersion 儲存過程的執行權限授予 ASP.NET 應用程序池標識或 Sql Server 使用者在 sqlConnectionString 屬性中指定。”
錯誤圖片:
我無法理解確切的問題以及如何解決它。任何幫助將不勝感激。
謝謝
為了讓它對我有用,我使用以下選項執行了命令。
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regsql.exe -S . -E -ssadd -sstype p我相信
-ssadd選項(“添加對 SQL Server 模式會話狀態的支持。”)是導致它正確設置儲存過程的原因。請參閱此連結以獲取完整的選項列表。
所有這些資訊都非常有價值,但根據您的情況,還有一些更有價值的說明。
如果您執行嚮導,它不會使用 -ssadd 標誌執行。-ssadd 標誌是創建 dbo.TempGetVersion 過程和其他過程的原因。
如果您要使用自定義伺服器/數據庫,您將需要按如下方式執行程序…
aspnet_regsql.exe -S YourServerName -d YourDatabaseName -ssadd -E -sstype c
- -S 是您的伺服器名稱標誌
- -D 是您的數據庫名稱標誌
- -ssadd 添加對 SQLServerm 模式會話狀態的支持。如果需要刪除程序,請執行 -ssremove。
- -E 使用目前的 Windows 憑據連接到目標數據庫以進行設置。
- -sstype c 表示這是一個自定義數據庫名稱。

