我的团队正在开发一个蹩脚的旧网站,大部分页面仍然是 ASP 经典。不过,我们最近迁移到使用 ASP.NET 和通配符映射的表单身份验证。除了一件事之外,一切都出奇地顺利:登录的用户超时太快。查看日志后,人们似乎在 20 分钟后超时(这是由于不活动而指定的超时)。

因此,我们的假设是 ASP 经典页面不会触发表单身份验证框架中重置不活动计时器的任何机制。我已经用谷歌搜索过,甚至阅读了大古的通配符映射帖子,但仍然找不到其他遇到此问题的人。那么,1)你见过这个问题吗?2)最好的解决方法是什么?(除了在后台加载愚蠢的 .NET 页面的每个 janky ASP 页面中手动放置一个隐藏框架之外)

更新: 滑动过期 被设定为 真的

: :我们不能使用永久会话,因为我们需要应用程序在 20 分钟不活动后超时。另外,这个糟糕的网站是这样编写的,因此界面通常存储在页面中。没有一段简单的界面代码可以让我将 JavaScript 放入其中。我们尝试将一些 js 放入包含文件中,该文件被大约 80% 的页面调用,但它导致了文件下载缓冲区的一些深奥问题,因此我们可能不得不尝试不同的策略。谢谢。

有帮助吗?

解决方案

创建一个永久会话。

本质上,您最终会在母版页或导航用户控件(无论您使用什么来实现一致的导航)中发出一些 JavaScript 和图像标记。此 JavaScript 在某个时间间隔将图像标记的源更改为 http 处理程序端点(某些 .aspx、.ashx),该端点返回 1x1 像素清晰的 gif 作为图像的响应。持续的请求可确保空闲页面使会话保持活动状态。

只要浏览器窗口打开您的页面,您的 ASP.NET 会话就永远不会超时。

JavaScript 通常会在请求中附加一个随机数,以便浏览器不会缓存该请求。

提供了一个不错的演练 这里.

其他提示

我假设您已经手动创建了 cookie,在这种情况下,代码中的超时值可能会覆盖配置中的超时值。

首先,如果可能的话(也可能不是)不要手动创建 cookie,它不仅可以让您免于这个头痛,还可以让您免于其他许多麻烦。

如果您必须手动创建 cookie,请确保您使用的超时实际上是读取您在配置文件中设置的超时值,并且滑动过期设置为 true(正如您所说的那样)。

也就是说,当手动创建 cookie 时,我们仍然偶尔会遇到奇怪的超时问题。在我工作的地方,我们实施了一个解决方案,允许自动创建 cookie,并且超时不再是问题;然而,它确实造成了其他问题,我们被迫切换回来。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top