如果启用了slidingExpiration,IReadOnlySessionState是否会重置超时?

时间:2014-11-07 16:24:19

标签: session session-state readonly

众所周知,当您启用slidingExpiration(slidingExpiration="true")时,每次请求都会重置authenticate超时。但是我不确定,我无法找到这种情况何时发生。是否在请求获取资源或发布时间时发生。如果第二个为真,那么只有我们实现IRequiresSessionState时,slidingExpiration才会重置超时,因为它是唯一获取独占锁的接口,因此唯一需要释放项的地方(SetAndReleaseItemExclusive)。

1 个答案:

答案 0 :(得分:0)

我找到了使用两个接口并观察结果的解决方案...... 启用了slidingExpiration,无论您使用的是IReadOnlySessionState还是IRequiresSessionState ,都会重置tiemeout

在我试过的场景之下。

我有一个应用程序,它有一些经典的ASP屏幕和.Net页面一起生活。为了避免在用户仅使用经典ASP页面时超时,我有一个名为KeepAlive(KeepAlive.ashx)的通用处理程序,每次打开Classic asp页面时都会调用它。 ashx的代码非常简单

public class KeepAlive : IHttpHandler, IRequiresSessionState 
{
    /// <summary>
    /// Processes the request
    /// </summary>
    /// <param name="context"></param>
    public void ProcessRequest(HttpContext context)
    {
    }
}

我更改了web.config中的<sessionState timeout="1" />,所以我不需要等待20分钟:P和我将KeepAlive更改为使用IReadOnlySessionState。如果我在1分钟的时间范围内继续打开经典ASP屏幕,我就不会获得身份验证超时,这意味着无论是否使用独占锁定,都会重置超时。

希望这有助于其他人:)