【问题标题】:Custom SQL Server Session Provider in ASP.NETASP.NET 中的自定义 SQL Server 会话提供程序
【发布时间】:2012-04-17 12:52:24
【问题描述】:

使用 aspnet_regsql 实现 SQL Server 会话提供程序。

在网络配置中

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

创建会话时,会在数据库中为该会话添加新行,但当会话到期时,它不会删除该行。我们是否需要手动自定义删除过期会话的方法?如果是,请说明我们需要重写的方法。

谢谢, 普拉文

【问题讨论】:

    标签: asp.net session customization session-state


    【解决方案1】:

    查看Implementing a Session-State Store Provider删除过期的会话存储数据部分。

    当为会话调用Abandon method 时,数据为 使用 RemoveItem 从数据存储中删除该会话 方法。否则,数据将保留在会话数据存储中以提供服务 未来的会话请求

    删除过期会话数据的机制取决于 数据源的功能。如果您的数据源可以 配置为根据会话删除过期会话数据 Timeout 属性,可以使用SetItemExpireCallback 方法 引用 Session_OnEnd 事件的委托并引发它 删除过期会话数据时。

    参考:Delete session from database after it expired?

    【讨论】:

    • 如何在调用 Page_load 事件之前或在 Global.asax 中使用 SQl Server Session Provider 找到 Session Expire。
    • 引用 linkthis
    • 我试过了。那是 SessionMode="InProc"。我正在使用 SessionMode="SQLServer"。当我们使用 SessionMode="SQLServer" 时如何找到 Session Expire?
    【解决方案2】:

    您可以通过以下代码手动执行此操作

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

    【讨论】:

    • 我不知道我是否调用 HttpContext.Current.Session.Abandon();然后使用内置函数从 SQL Server 中删除会话 ID。我以为我需要手动覆盖事件以删除过期的会话数据。谢谢
    猜你喜欢
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 2018-11-10
    相关资源
    最近更新 更多