2

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

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

更新slidingExpiration设置为true

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

4

2 回答 2

2

创建一个永久会话。

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

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

JavaScript 通常会在请求中添加一个随机数,这样浏览器就不会缓存请求。

一个不错的演练可以在这里找到

于 2008-09-11T21:56:27.747 回答
0

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

首先,如果可能(可能不是)不要手动创建 cookie,它不仅可以让您避免这种头痛,还可以避免其他许多问题。

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

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

于 2010-01-06T15:00:44.110 回答