当用户退出基于windows身份验证的ASP.NETMVC网站时,如何运行清理代码?

当用户退出基于windows身份验证的ASP.NETMVC网站时,如何运行清理代码?,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,我有一个基于ASP.Net MVC 3 intranet的web应用程序,它正在使用Windows身份验证。每当用户启动应用程序时,我们都需要在数据库中存储一些特定于用户的数据(仅针对当前用户会话) 当用户退出应用程序时,我需要一种完全验证的方法从数据库中删除此临时数据(即,由于30分钟以上不活动、网络故障等原因关闭浏览器窗口) 我只是想在布局页面中包含一个javascript,用于定期记录用户在数据库中的最后活动时间,然后构建一个调度器,如果活动时间高于定义的阈值,它可以检查数据库并删除用户的

我有一个基于ASP.Net MVC 3 intranet的web应用程序,它正在使用Windows身份验证。每当用户启动应用程序时,我们都需要在数据库中存储一些特定于用户的数据(仅针对当前用户会话)

当用户退出应用程序时,我需要一种完全验证的方法从数据库中删除此临时数据(即,由于30分钟以上不活动、网络故障等原因关闭浏览器窗口)

我只是想在布局页面中包含一个javascript,用于定期记录用户在数据库中的最后活动时间,然后构建一个调度器,如果活动时间高于定义的阈值,它可以检查数据库并删除用户的临时数据


请建议是否有更好、更简单的方法来解决此问题。

即使在用户关闭窗口而不注销后,问题也肯定会得到解决。我们使用一个类似的解决方案,其中我们有一个预定的作业查找过期的会话并删除相关数据。不过,我们寻找过期解决方案的方法有点过于简单


我们有一个HttpModule,它在
AuthenticateRequest
上更新用户实体的
LastActiveOn
属性。我们过滤掉了某些类型的请求(如AJAX轮询、对图像和静态资源的请求等)。

我认为您混淆了注销和用户关闭浏览器窗口/终止浏览器进程的概念,这完全不是一回事。第一个概念是可以可靠地检测到的,第二个概念不是。非常感谢您的回复,所以这个想法与此类似,即使用预定作业检查过期会话并进行清理。我想包括一个javascript脚本,因为我的应用程序的一个页面是一个仪表板页面,它使用Ajax长轮询进行升级。当这个页面打开时,我需要处理用户仍然在线并且正在查看应用程序的情况。如果任何其他页面处于打开状态且用户处于非活动状态,则需要将其视为非活动状态,并可以进行清理。我喜欢JavaCIPT上的这个HTTPMODEL解决方案,但是请建议如何处理仪表板页面?如果长的轮询间隔比您认为“不活动”的间隔短(大概是),然后,您所需要做的就是在HTTP模块中包含允许更新LastActiveOn的路径的长轮询路径。