我创造了一个计时器。定时器调用后,我需要重定向到另一个页面。
请帮帮我。
我的代码:
System.Timers.Timer myTimerfortodolist;
void Application_Start(object sender, EventArgs e)
{
myTimerfortodolist = new System.Timers.Timer();
myTimerfortodolist.Interval = 60000;//86400000 milisecond is equal to 24;
myTimerfortodolist.AutoReset = true;
myTimerfortodolist.Elapsed += new System.Timers.ElapsedEventHandler(myTimer_TODO);
myTimerfortodolist.Enabled = true;
}
//create for check send Interval from Reminder Config within 5 minute
public void myTimer_TODO(object source, System.Timers.ElapsedEventArgs e)
{
if (//Condition//)
{
Response.Redirect("~/Authorize.aspx");
}
}
在此背景下无法获得响应。
我从Page重定向到另一个,并且计时器每1分钟运行一次,所以我无法在委托方法中获取Current HttpContext
答案 0 :(得分:1)
为什么你付出这么多努力......当你有一个简单的解决方案时......使用Thread.sleep()
void Application_Start(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(60000);//86400000 milisecond is equal to 24;
Response.Redirect("~/Authorize.aspx");
}
编辑:响应将为null,因为httpcontext在那个时间为空。为什么? 因为当你创建和设置定时器时,处理它的线程在服务器中仍处于活动状态以处理你的代码...但是那时服务器已经处理了httprequestcontext并回复了..因此没有更多的请求和响应或会话可访问。 ..只有当服务器必须处理HttpRequest调用时才会创建它们......