0

我目前正在使用 Global.ascx 文件中的“Session_Start”函数来保存经过身份验证的用户访问我的网站的时间。

如果用户会话过期,这可以正常工作,但是由于我使用的是持久性 cookie,因此用户可能会在 28 天内返回该站点,并且不会调用此函数,因此不会记录在用户访问过的数据库中。

我仔细查看了 Global.ascx 中所有可用的功能,但是我找不到可以执行我需要的功能。

Application_Start - 触发仅在生命周期内运行 Application_BeginRequest - 发出的每个请求 Application_AuthenticateRequest - 每个请求 Session_Start - 启动新会话时

我认为可以使用的两个事件是 Application_BeginRequest 或 Application_AuthenticateRequest。

有没有办法将上述事件限制为仅在第一次访问站点时运行特定代码,而不是在每次请求时运行?

或者有什么方法可以使用我的主文件吗?

任何建议都会非常有用。

干杯

4

1 回答 1

0

为什么不自己实现?正如您提到的,有一个事件 Application_BeginRequest。我认为以下可能会奏效:

protected void Application_BeginRequest(object sender, EventArgs e)
{       
    string session_param_name = "SOME_SESSION_ID";        

    if (HttpContext.Current.Request.Form[session_param_name] == null)
    {
         //Count
    }
    else if (HttpContext.Current.Request.QueryString[session_param_name] == null)
    {
        //Also count
     }
}
于 2013-10-09T18:44:57.820 回答