C# Global.ascx函数用于检测经过身份验证的用户的首页访问

C# Global.ascx函数用于检测经过身份验证的用户的首页访问,c#,forms-authentication,session-cookies,global-asax,C#,Forms Authentication,Session Cookies,Global Asax,我目前正在使用Global.ascx文件中的“Session_Start”功能,以便在经过身份验证的用户访问我的站点时保存 如果用户会话过期,这可以正常工作,但是由于我正在使用持久cookie,用户可能会在28天内返回站点,并且不会调用此函数,因此不会在用户访问的数据库中记录 我已经仔细查看了Global.ascx中的所有可用函数,但是我找不到一个可以执行我所需要的功能 应用程序启动-仅在生命周期内运行 应用程序_BeginRequest-提出的每个请求 应用程序\u AuthenticateR

我目前正在使用Global.ascx文件中的“Session_Start”功能,以便在经过身份验证的用户访问我的站点时保存

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

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

应用程序启动-仅在生命周期内运行 应用程序_BeginRequest-提出的每个请求 应用程序\u AuthenticateRequest-每个请求 会话\启动-启动新会话时

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

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

或者,有没有办法使用我的主文件

任何建议都会非常有用


干杯

你为什么不自己动手呢?正如您提到的,有一个事件应用程序\u BeginRequest。我认为以下可能会奏效:


因此,当身份验证用户首次访问该站点时,例如example.com,将不会有任何Request.Form或Request.Querystring变量。
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
     }
}