Asp.net mvc 如何在ASP.NET MVC中存储登录日期和注销日期

Asp.net mvc 如何在ASP.NET MVC中存储登录日期和注销日期,asp.net-mvc,authentication,Asp.net Mvc,Authentication,你好,我想为每个用户存储登录日期和注销日期 为便于统计: 登录很简单,但是注销呢 哪一个是让我们知道注销的最佳事件 不管注销按钮,这也很容易 我的意思是如何知道会话在asp.net mvc中完成。每次实例化新会话时,您都可以将会话id和登录日期以及空的注销日期字段存储在数据库中。如果注销是明确的,您可以填写此项。您可以定期对数据库执行批处理,以记录任何早于会话超时且具有空注销值的项目的注销 编辑:作为旁注,您可能还需要最后一个“活动”字段来确保您没有记录当前活动会话的注销。您可以在Global.

你好,我想为每个用户存储登录日期和注销日期

为便于统计:

登录很简单,但是注销呢

哪一个是让我们知道注销的最佳事件 不管注销按钮,这也很容易


我的意思是如何知道会话在asp.net mvc中完成。

每次实例化新会话时,您都可以将会话id和登录日期以及空的注销日期字段存储在数据库中。如果注销是明确的,您可以填写此项。您可以定期对数据库执行批处理,以记录任何早于会话超时且具有空注销值的项目的注销


编辑:作为旁注,您可能还需要最后一个“活动”字段来确保您没有记录当前活动会话的注销。

您可以在Global.asax中使用此代码来检测会话何时结束并执行某种操作

protected void Session_End(Object sender, EventArgs e)
{
    // Perform action here
}

因此,在常规asp.net global asax中,没有任何事件会话超时???您能告诉我如何定期执行批处理吗???@feras:我通常使用控制面板下的任务调度器。我编写了一些小的windows窗体控件,这些控件可以在具有/不具有交互性的情况下运行,这些控件使用各种命令行参数来执行这些任务。您可能会使用windows服务,但我认为小型控制台或winforms应用程序最合适。对不起,先生,该应用程序位于共享主机中,而不是我自己的服务器中,因此我只能使用我的asp.net应用程序。你不认为为每个会话创建一个计时器对象是一个好主意吗,还是浪费性能,,,还有其他想法吗?@feras-计时器不是一个好主意,因为它会增加开销,计时器是昂贵的构造,但是,如果保留一个保存计数器或上次尝试日期的静态应用程序变量,然后使用该变量在global.asax的application_BeginRequest方法中执行操作,也可以获得类似的结果。这里还有一些类似解决方案的其他想法: