【问题标题】:Does the IReadOnlySessionState resets timeouts if slidingExpiration is enabled?如果启用了slidingExpiration,IReadOnlySessionState 是否会重置超时?
【发布时间】:2014-11-07 16:24:18
【问题描述】:

众所周知,当您启用slidingExpiration (slidingExpiration="true") 时,每次请求都会重置身份验证超时。但是我不确定,而且我无法找到实际发生的时间。无论是在请求获取资源时发生还是在发布时发生。如果第二个为真,则当我们正在实现 IRequiresSessionState 时,slidingExpiration 只会重置超时,因为它是唯一获取排他锁的接口,因此唯一需要释放项(SetAndReleaseItemExclusive)的接口。

【问题讨论】:

    标签: session session-state readonly


    【解决方案1】:

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

    在我试穿的场景下。

    我有一个应用程序,它有一些经典的 ASP 屏幕与 .Net 页面一起使用。如果用户只使用经典 ASP 页面,为了避免超时,我有一个名为 KeepAlive (KeepAlive.ashx) 的通用处理程序,每次打开经典 ASP 页面时都会调用它。 ashx的代码很简单

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

    我在 web.config 中更改了&lt;sessionState timeout="1" /&gt;,因此我不需要等待 20 分钟:P 并且我将 KeepAlive 更改为使用 IReadOnlySessionState。如果我在 1 分钟的时间范围内继续打开经典的 ASP 屏幕,我不会收到身份验证超时,这意味着无论是否使用独占锁,超时都会被重置。

    希望这对其他人有帮助:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-25
      • 1970-01-01
      • 2012-05-09
      • 1970-01-01
      • 2015-06-18
      • 1970-01-01
      相关资源
      最近更新 更多