在MVC和ASP.NET中检测即将发生的会话超时

本文关键字:超时 会话 检测 MVC ASP NET | 更新日期: 2023-09-27 17:51:05

我有一个使用VS 2013, MVC 5和EF 6构建的活跃网站。这是医院用的。我们遇到的一个问题是,用户有时在输入数据时被调用,而不保存当前条目。当它们返回时,会话已经过期,并且丢失了所有未保存的数据。撇开用户应该做什么的讨论不谈,我想做的是在服务器(首选)或客户机上检测会话何时即将过期,以便采取补救措施。(我知道怎么做这部分)。

延长会话超时不是一个解决方案,因为它不会检测到用户忘记注销或刚刚关闭浏览器的情况。

有很多处理会话超时的例子;我找不到任何关于如何在这些潜在的超时发生之前检测它们的内容。

有解决这个问题的例子吗?

在MVC和ASP.NET中检测即将发生的会话超时

简单的方法是使用javascript在客户端设置计时器,将计时器设置为小于会话值,并在计时器滴答时执行您需要的任何操作。您还需要重置任何动作的计时器,这些动作也会重置会话。

var timeout;
var timeouttime = value in miliseconds
functionStart(){call this on initial page load
timeout = setTimeout("Function()", timeouttime}
function{"Function()"{do what ever before the sessions expire}

你可以在服务器端做类似的事情,但是我在asp.net服务器端总是有定时器的问题,所以上面是我经常使用的

我建议你:

  • 在web应用中创建一个虚拟端点
  • 在数据输入屏幕上使用javascript,每隔一段时间(例如每10分钟)向虚拟端点执行AJAX请求。使用jQuery + setTimeout可能是定期执行AJAX请求的最简单方法。下面是一个不错的例子:https://xpapad.wordpress.com/2010/06/19/preventing-session-expiration-with-ajax/