asp.net 中止Global.asax Application_End事件 避免应用程序池回收 定时任务
2012-08-31 15:02
489 查看
还是在最近做记录日志功能的测试时发现的问题,我的线程中一直有写日志的任务,但过了一段时间不写了,怎么都想不通。开始也没太注意 asp.net应用程序的生命周期,后在网上查了些资料,才知道是IIS为考虑服务器压力设置的资源闲置过久回收的机制,当网站没有人访问过一段时间就启动 Global.asax 中Application_End事件回收资源。(大致意思是这样的可能我表述的不是很清楚,关于asp.net应用程序的生命周期与Global.asax的一些事件作用请另找资料)
原理:当有第一个人访问时,启动一个定时器,定时模拟客户请求一次网站,定时器间隔时间可以设置小于IIS应用程序池闲置超时时间。
项目的Global.asax.cs页面
public class Global : System.Web.HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
//当有第一个人访问时,启动一个定时器
System.Timers.Timer timer = new System.Timers.Timer();
timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
timer.Interval = 60000;
timer.Enabled = true;
}
//定时模拟客户请求一次网站
void timer_Elapsed(object sender, ElapsedEventArgs e)
{
string url = "http://localhost:8088/Default.aspx";
System.Net.WebClient client = new System.Net.WebClient();
client.DownloadData(url);
}
}
还有一种方式利用缓存的机制实现的,缓存过期时触发回调事件(/article/2900334.html)说的比较清楚
原理:当有第一个人访问时,启动一个定时器,定时模拟客户请求一次网站,定时器间隔时间可以设置小于IIS应用程序池闲置超时时间。
项目的Global.asax.cs页面
public class Global : System.Web.HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
//当有第一个人访问时,启动一个定时器
System.Timers.Timer timer = new System.Timers.Timer();
timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
timer.Interval = 60000;
timer.Enabled = true;
}
//定时模拟客户请求一次网站
void timer_Elapsed(object sender, ElapsedEventArgs e)
{
string url = "http://localhost:8088/Default.aspx";
System.Net.WebClient client = new System.Net.WebClient();
client.DownloadData(url);
}
}
还有一种方式利用缓存的机制实现的,缓存过期时触发回调事件(/article/2900334.html)说的比较清楚
相关文章推荐
- 在Global.asax中设置Asp.Net的定时任务
- ASP.NET 用 Global.asax 的Application_BeginRequest 事件过滤恶意提交
- ASP.NET 定时执行任务 global.asax
- ASP.NET的global.asax文件中的Application事件(二)
- ASP.NET 定时执行任务 global.asax 执行一段时间后停止
- ASP.NET的global.asax文件中的Application事件(二)
- ASP.NET 定时执行任务 global.asax
- ASP.NET的global.asax文件中的Application事件(二)
- 关于触发asp.net Global.asax Session_End事件的经验
- ASP.NET MVC中注册Global.asax的Application_Error事件处理全局异常
- ASP.NET MVC中注册Global.asax的Application_Error事件处理全局异常
- ASP.NET 定时执行任务 global.asax
- ASP.NET MVC中注册Global.asax的Application_Error事件处理全局异常
- ASP.NET的global.asax文件中的Application事件(一)
- ASP.NET的global.asax文件中的Application事件(一)
- 【转】ASP.NET之 关于触发Global.asax Session_End事件的经验
- ASP.NET的global.asax文件中的Application事件(一)
- asp.net web 定时执行任务 定时器 Global.asax
- ASP. NET 项目中的 【Global.asax】 的 【Application_End】方法 触发问题
- ASP.NET通过Global.asax和Timer定时器 定时调用WebService 运行后台代码