2012-04-17 97 views
1

使用aspnet_regsql實現SQL Server會話提供程序。ASP.NET中的自定義SQL Server會話提供程序

在Web配置

<sessionState mode ="SQLServer" cookieless="false" timeout="1" allowCustomSqlDatabase="true" sqlConnectionString="Password=ads;Persist Security Info=True;User ID=sa;Initial Catalog=ASPState;Data Source=DF" /> 

當會話創建新行添加了對數據庫中的會話,但是當會話過期時它不刪除行。我們是否需要手動定製刪除過期會話的方法?如果是,請說明我們需要覆蓋的方法。

感謝, 普拉

回答

0

經過Implementing a Session-State Store Provider刪除過期會話存儲區數據部分做到這一點。

Abandon method被調用的會話,用於 的數據會話從使用的removeItem 方法的數據存儲中刪除。否則,數據將保留在會話數據存儲中以供 將來的會話請求使用

刪除過期會話數據的機制取決於數據源的 功能。如果您的數據源可以 配置爲根據會話超時 屬性,刪除過期的會話數據,你可以使用SetItemExpireCallback方法 參考委託爲的Session_OnEnd事件,並刪除過期的會話數據時提高它 。

編號:Delete session from database after it expired?

+1

如何在使用SQl服務器會話提供程序調用Page_load事件或在Global.asax中查找會話過期。 – Pravin 2012-04-17 05:57:50

+0

ref this [link](http://blogs.msdn.com/b/nikhiln/archive/2007/06/21/detecting-session-timeout-in-asp-net-2-0-web-applications.aspx )和[這](http://stackoverflow.com/questions/391784/asp-net-session-expiry-redirect-to-login-page) – 2012-04-17 06:25:12

+1

我試過了。那是SessionMode =「InProc」。我正在使用SessionMode =「SQLServer」。當我們使用SessionMode =「SQLServer」時如何找到Session Expire? – Pravin 2012-04-17 06:41:17

0

U可以手動以下代碼

HttpContext.Current.Session.Remove("session"); 
HttpContext.Current.Session.Abandon(); 
+1

我不知道如果我叫HttpContext.Current.Session.Abandon();然後通過使用內置函數從SQL Server中刪除會話Id。我以爲我手動需要重寫該事件以刪除過期的會話數據。謝謝 – Pravin 2012-04-17 05:47:07

相關問題