众所周知,当您启用slidingExpiration(slidingExpiration="true"
)时,每次请求都会重置authenticate超时。但是我不确定,我无法找到这种情况何时发生。是否在请求获取资源或发布时间时发生。如果第二个为真,那么只有我们实现IRequiresSessionState时,slidingExpiration才会重置超时,因为它是唯一获取独占锁的接口,因此唯一需要释放项的地方(SetAndReleaseItemExclusive)。
答案 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屏幕,我就不会获得身份验证超时,这意味着无论是否使用独占锁定,都会重置超时。
希望这有助于其他人:)