在asp.net中处理会话超时的最佳方法是什么

有各种方法来处理会话超时,例如加载function上的“元刷新”javascript。

我想要一些整洁的东西:超时前5分钟,警告用户……

我也在考虑只要浏览器打开就保持会话开放(仍然需要弄清楚如何做到这一点……可能是一些令人耳目一新的iframe)。

你如何处理会话超时,你认为我应该进入哪个方向?

处理会话超时的最佳方法。

我说有2个基本案例。
一种是当用户输入很少或没有数据,只是阅读报告,或用他的鼠标做小思考。 在这种情况下,没有简单的方法通知他会话即将到期。 如果要检查调用后面代码的会话剩余时间,则自动更新会话。 然后,如果您有一个计时器来倒计时,那么用户可能已经打开了一个新的网页选项卡,会话将会过期但不是您用javascript记录的时间,并且用户收到了错误的消息。

所以对我来说,当用户输入很少或没有数据时,只是让会话过期,如果他失去了一次点击,它将在以后再次进行。

其次是当用户需要输入许多数据时 ,一段时间可能需要时间,例如长文本,以编写并修复它。 在这种情况下,我使用以下技术,我不会让会话结束。

如何在浏览器中保持会话打开。

这是一个非常好的和简单的技术,我使用一个图像,我使用JavaScript在会话超时之前重新加载它。

  

在第三种情况下 ,您可以这样做。 我们关心会话是否仅在回发后过期。 当用户输入一些数据并在post后面时,应用程序将其重定向到登录页面并且post丢失。

在第三种情况下, 您可以捕获发布数据并保存,直到用户重新登录。 您可以在。上捕获global.asax上的发布数据

 protected void Application_AuthenticateRequest(Object sender, EventArgs e) 

这是在重定向到登录页面之前调用的函数,在那里你看到你是否有发布数据和登录所需的使用,你将该post数据,ether保存到新的重定向页面,以太网到服务器(可能在会话,也许在你的临时数据库上)。

现在,在用户再次登录后,您再次将其重定向到包含已保存的post数据的最后一页,并且用户将继续保持原样。

这里唯一的技巧是制作一个中间页面,使用最后发布的数据和自动重定向javascript调用来呈现表单。

我唯一能想到的是在页面上生成一些创建客户端计时器的脚本,以便在接收和呈现页面时,它可以在X分钟后显示警报(即到期前5分钟)。

如果您希望会话保持活动状态,则可以使用通过AJAX定期调用的通用处理程序(ASHX)来执行此操作。 这将有助于刷新会话,只要AJAX调用继续,它就应该保持活动状态。

示例“keepalive.ASHX”:

 <%@ WebHandler Language="C#" Class="keepalive" %> using System; public class keepalive : System.Web.IHttpHandler { public void ProcessRequest (System.Web.HttpContext context) { context.Response.ContentType = "text/json"; var thisUser = System.Web.Security.Membership.GetUser(); if (thisUser != null) context.Response.Write("[{\"User\": \"" + thisUser.UserName + "\"}]"); } public bool IsReusable { get { return false; } } } 

这里是页面上的脚本来调用它(为简单起见,使用jQuery):

  

在web.config中使用一些关闭会话超时变量的jquery。 您可以使用此 Jquery延迟技巧,当特定时间发生时(页面加载后x分钟),它会在x分钟内弹出一个div会话超时。 很好,干净,非常简单。

关于会话超时,Codesleuth的ajax调用将是完美的。