2013-10-09 2 views
0

В настоящее время я использую функцию Session_Start в файле Global.ascx для сохранения, когда пользователь, прошедший проверку подлинности, посещает мой сайт.Функция Global.ascx для обнаружения первой страницы с проверкой подлинности пользователей

Это работает нормально, если сеанс пользователя истекает, однако, поскольку я использую постоянные куки-файлы, пользователь может вернуться на сайт в течение 28 дней, и эта функция не будет вызываться и, следовательно, не будет записывать в базу данных, что пользователь посетил.

Я хорошо рассмотрел все функции, доступные в Global.ascx, однако я не могу найти тот, который будет выполнять то, что мне нужно.

Application_Start - срабатывает только запустить в течение жизненного цикла Application_BeginRequest - каждый запрос сделал Application_AuthenticateRequest - каждый запрос session_start - когда начинается новый сеанс

Два события, которые я считаю могут быть использованы, Application_BeginRequest или Application_AuthenticateRequest.

Есть ли способ ограничить вышеуказанные события только запуском определенного кода при первом посещении сайта, а не по каждому запросу?

В качестве альтернативы можно использовать мой основной файл?

Любые предложения были бы очень полезными.

Приветствия

ответ

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 
    } 
} 
+0

Таким образом, когда пользователь аутентификации первого посещения сайта, скажем, example.com не будет никаких Request.Form или Request.QueryString переменные. – user2008865