Я использую класс System.Timers.Timer.Логика заключается в том, чтобы запустить таймер через истекший через 5 минут.По истечении интервала (скажем, через 5 минут) я хочу очистить переменные сеанса, которые должны быть расположены, и перенаправить в другое представление.
Я знаю, что основной поток и прошедший интервал - это два разных потока, и поэтому я не могу получить доступ к сеансу.Но я связан с требованием очистить сессию и перенаправить на другое представление после этого интервала.
Я также думал об использовании функции тайм-аута JavaScript, но я подозреваю, что это не поможет мне, потому что мое приложение вызывает другой API (API шлюза платежей), и URL будет перенаправлен на их страницу URL.Поэтому, проверяя DOM, я вижу только содержимое их html-страниц, и мой контент появится позже, когда публикация моего URL-адреса с их сервера. (К этому времени таймер javascript уже исчезнет)
Мой код:
public async Task<ActionResult> Index()
{
TimerSessionForIssueTicket();
return View();
}
public void TimerSessionForIssueTicket()
{
FlightBooking FlightBooking = new FlightBooking();
if (Session["Timer"] == null)
Session["Timer"] = new Timer();
((Timer)Session["Timer"]).Interval = FlightBooking.GetTicketBookingIssueTime((string)ConfigurationManager.AppSettings["TicketBookingWindowTotal"]);
((Timer)Session["Timer"]).Elapsed += OnTimedEvent;
((Timer)Session["Timer"]).AutoReset = false;
((Timer)Session["Timer"]).Enabled = true;
}
private void OnTimedEvent(object source, ElapsedEventArgs e)
{
CancelBooking();
}
public ActionResult CancelBooking()
{
if (Session["Inbound"] != null) { Session.Remove("Inbound"); }
return View("Index", home);
}
По истечении таймера сеанс выдал исключение system.nullreference.Я удалил код для удаления сеанса, чтобы проверить перенаправление страницы, но не пришло сообщение об ошибке, и страница не перенаправила.
Как я могу исправить эту проблему?ИЛИ есть ли другие методы для выполнения этой задачи?Пожалуйста, предложите