2012-04-17 3 views
1

Внедрение поставщика сеанса SQL Server с помощью aspnet_regsql.Пользовательский поставщик сеансов SQL Server в ASP.NET

В Web Config

<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" /> 

Когда сеанс создается новая строка добавляется для этой сессии в базе данных, но когда истекает сессии он не удалить строку. необходимо ли нам вручную настроить метод для удаления истекшего сеанса? Если да, объясните методы, которые нам нужно переопределить.

Спасибо, Pravin

ответ

0

Пройтись Implementing a Session-State Store Provider «s Удаление Истекло сеанса хранилища данных раздел.

Когда Abandon method вызываются для сеанса, данные для , что сеанс удаляется из хранилища данных с использованием RemoveItem метода. В противном случае данные остаются в хранилище данных сеанса для обслуживания будущих запросов к сеансу

Механизм удаления устаревших данных сеанса зависит от возможностей вашего источника данных . Если ваш источник данных может быть настроен для удаления устаревших данных сеанса в соответствии с сеансом таймаута собственности, вы можете использовать SetItemExpireCallback метод для ссылки делегата для Session_OnEnd события и поднять его при удалении устаревших данных сеанса.

Ref: Delete session from database after it expired?

+1

Как найти Session Expire, прежде чем он вызовет событие Page_load или в Global.asax, используя SQl Session Session Provider. – Pravin

+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) и [this] (http://stackoverflow.com/questions/391784/asp-net-session-expiry-redirect-to-login-page) –

+1

Я пробовал это. Это для SessionMode = "InProc". Я использую SessionMode = "SQLServer". Как найти Session Expire при использовании SessionMode = "SQLServer"? – Pravin

0

U можно вручную сделать это, следуя код

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

Я не зная, если я называю HttpContext.Current.Session.Abandon(); то идентификатор сеанса удаляется с сервера SQL с помощью встроенной функции. Я думал, что мне нужно вручную переопределить событие, чтобы удалить истекшие данные сеанса. thanks – Pravin

Смежные вопросы