我的团队正在开发一个糟糕的旧网站,大多数网页仍然是ASP经典版。但是,我们最近使用ASP.NET和通配符映射迁移到表单身份验证。一切都运行得非常好,除了一件事:登录用户超时太快。在查看日志之后,看起来人们正好在20分钟后超时(这是由于不活动而指定的超时)。
因此,我们的假设是ASP经典页面不会绊倒表单身份验证框架中重置不活动计时器的任何机制。我已经google了一下,甚至阅读了Great Gu的通配符映射帖子,但仍然找不到其他有这个问题的人。那么,1)你见过这个问题吗? 2)什么是最好的解决方法? (除了在每个在后台加载一个愚蠢的.NET页面的janky ASP页面中手动放置一个隐藏的框架之外)
更新: slidingExpiration 设置为 true
:我们无法使用永久会话,因为我们需要应用程序在不活动20分钟后超时。此外,这个可怕的网站被编写,以便界面通常存储在页面中。没有简单的界面代码我可以将JavaScript放入其中。我们试图将一些j放入一个包含文件中,该文件被我们大约80%的页面调用,但它导致文件下载缓冲区出现了一些深奥的问题,所以我们可能不得不尝试不同的方法。谢谢。
答案 0 :(得分:2)
创建永久会话。
基本上,您最终会在母版页或导航用户控件(无论您用于一致导航的任何内容)中发出一些JavaScript和图像标记。这个JavaScript在某个时间间隔上将图像标记的源更改为http处理程序端点(某些.aspx,.ashx),它返回1x1像素清除gif作为图像的响应。常量请求可确保空闲页面使会话保持活动状态。
只要浏览器窗口对您的页面打开,您的ASP.NET会话就永远不会超时。
JavaScript通常会在请求的随机数上添加,以便浏览器不会缓存请求。
可以使用体面的演练here。
答案 1 :(得分:0)
我假设您已手动创建了cookie,在这种情况下,代码中的超时值可能会覆盖配置中的超时值。
首先,如果可能(可能不是),不要手动创建cookie,它不仅可以避免这种令人头痛的问题,还可以避免其他许多问题。
如果您必须手动创建cookie,请确保您使用的超时实际上是读取您在配置文件中设置的超时值,并且滑动到期时间设置为true(您已经说过它)。
也就是说,当手动创建cookie时,我们仍会遇到偶然的奇怪超时问题。在我工作的地方,我们实施了一个解决方案,允许自动创建cookie,超时不再是问题;然而,它确实产生了其他问题,我们被迫转回。