[英]Asp.net session state server with SQL Server
我們正在嘗試使用以下web.config行來使會話狀態工作:
<sessionState
mode="SQLServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="Data Source=dbServer;User ID=stateUser;Password='thepassword'"
cookieless="false"
timeout="20"/>
在dbServer上,我們運行以下命令來設置ASPState db:
aspnet_regsql.exe -S localhost-E -ssadd -sstype p
在WebServer上,我們已經啟動了ASP.Net狀態服務,但是,表ASPStateTempApplications或ASPStateTempSessions中都沒有記錄,並且看起來會話仍在存儲中。
怎么了? 狀態服務是否應該在數據庫服務器上運行? 它是否與IIS一起安裝,因為盡管已安裝.net 3.5.1,但在該計算機上仍不可用。
IIS日志未顯示任何失敗提示。 怎么了?
如果密碼周圍確實有引號,請嘗試將其刪除:
sqlConnectionString="Data Source=dbServer;User ID=stateUser;Password=thepassword"
並刪除以下行,它沒有用於SQL會話存儲的功能:
stateConnectionString="tcpip=127.0.0.1:42424"
而且您最好停止國家服務。 它用於進程外會話狀態,而不是SQL Server會話狀態。
另外,SQL Server會話狀態要求您在數據庫而不是aspnet_regsql.exe
上運行InstallSqlState.sql
。 它應該創建一個新的ASPState
數據庫。
首先,您無需啟動狀態服務即可使用SQL Server會話狀態。 忘了ASP.NET狀態服務。
您確定您的站點正在創建會話變量嗎? 只是因為您將這些更改放入了web.config中,所以如果您從不使用會話變量,則將不會使用它。
編寫一個小的HttpModule怎么樣? 您可以在需要將用戶轉換到新代碼庫的一段時間內,將其放置到位。 該模塊可以對每個頁面請求進行一些工作,以檢查用戶的會話並確定是否需要放棄該會話。 也許您是在首次創建會話時將應用程序版本字符串存儲在用戶的會話中,然后將當前的應用程序版本字符串與之進行比較。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.