ASP.NET WebForms + WebApi InProc会话滑动过期行为

时间:2018-07-07 12:12:22

标签: asp.net asp.net-web-api session-state

我们有一个应用程序,它是基于ASP.NET WebForm的页面(ASPX,ASHX)和ASP.NET WebApi的融合。更重要的是,我们仅使用InProc会话(在LB上使用粘性会话)

该应用程序很旧,最近我们开始开发ASP.NET WebApi,以通过Ajax调用直接在页面中使用它们。 Web API层是无状态的,因此,作为API调用的一部分运行的代码将无权访问会话。

对Web API调用的授权检查有点笨拙,它依赖于ASP.NET会话ID cookie值,并对照数据库条目进行交叉检查以查看会话是否仍然有效(在Session_end事件中将其删除)。 / p>

由于从未针对API跟踪会话(由于无状态API),我们认为对于以SPA方式开发的页面可能会触发不必要的ASP.NET会话超时。

然而,经过一些测试,我们的信念被证明是错误的。我们发现,即使HttpContext中无法访问该会话,该会话仍在滑动。

我们通过在不同时间进行proc转储并观察存储了_utcExpiry引用的System.Web.Cache.CacheEntry的{​​{1}}来调试此问题。

以下是在开始任何API调用之前,此特定条目的内存转储的屏幕截图,

enter image description here

在调用了一些API之后,我们再次进行了转储并检查了相同的条目,并且到期时间滑了一分钟,

enter image description here

请比较两张图片中的_utcExpiry列。

感谢您可以分享您的经验/知识。我们计划主要使用SQL Server进行OutOfProc会话,并想知道是否会存在相同的行为。

0 个答案:

没有答案