Как предотвратить сброс таймера тайм-аута сеанса при использовании обработчика (ashx)?

Я использую обработчик для опроса определенной информации из моего приложения. У меня есть несколько вопросов об использовании обработчика в сочетании с тайм-аутом сеанса:

  1. Сбрасывает ли вызов обработчика таймер тайм-аута сеанса?
  2. Если да, то есть ли способы предотвратить сброс этого таймера?

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


person Kees C. Bakker    schedule 20.06.2011    source источник


Ответы (2)


  1. Да
  2. Запустите обработчик в другом веб-приложении
person Ben Robinson    schedule 20.06.2011
comment
Вау... неужели нет абсолютно никакого способа сделать это в том же приложении? - person Kees C. Bakker; 20.06.2011

Единственное решение, которое я могу придумать, - это выполнить какую-то ручную обработку тайм-аута сеанса. Что-то вроде этого:

void Application_BeginRequest(object sender, EventArgs e)
{
    if(Session["LastAccessTime"] != null && (DateTime)Session["LastAccessTime"] < DateTime.Now.AddMinutes(-20))
        Session.Abandon();

    if(Request.RawUrl != "/MyHandler.ashx")
        Session["LastAccessTime"] = DateTime.Now;
}
person Tim Rogers    schedule 20.06.2011
comment
Нет, это отдельно. Либо сеанс .NET истечет первым, что нормально, либо этот таймер. Но на этот таймер не влияют вызовы обработчика. - person Tim Rogers; 20.06.2011
comment
Да, но тайм-аут сеанса — это то, что происходит на сервере, когда клиент не подключается (он запускает Session_End). Ваше решение работает только тогда, когда приходит запрос и фактически истекает время ожидания. - person Kees C. Bakker; 20.06.2011
comment
Но вы часто проводите опросы, так что я не понимаю, почему это может быть проблемой? Я не говорю, что это самое элегантное решение, но я не понимаю, почему оно не сработает. - person Tim Rogers; 20.06.2011