解决ASP.NET中GLOBAL中线程自动回收的问题
2009-04-03 11:17
274 查看
在ASP.NET中,微软提供了一个叫做GLOBAL的文件,它可以在系统启动后,后台执行相关语句,比较时候后台自动对数据处理。
但是实践中发现,如果该网站经常不被访问的话(默认是30分钟),该GLOBAL线程将被自动回收
因此为了保证程序在相应时间后,后台程序仍在工作,只需要对程序进行如下改造,关键是APPLICATION_END中的改造
System.Threading.Thread sisThread = null;
void Application_Start(object sender, EventArgs e)
private void ThreadFunction()
void Application_End(object sender, EventArgs e)
{
.);
//下面的代码是关键,可解决IIS应用程序池自动回收的问题
System.Threading.Thread.Sleep(1000);
//这里设置你的web地址,可以随便指向你的任意一个aspx页面甚至不存在的页面,目的是要激发Application_Start
string url = "http://localhost:80/Login.aspx";
System.Net.HttpWebRequest myHttpWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
System.Net.HttpWebResponse myHttpWebResponse = (System.Net.HttpWebResponse)myHttpWebRequest.GetResponse();
System.IO.Stream receiveStream = myHttpWebResponse.GetResponseStream();//得到回写的字节流
//sisThread.Abort();
//sisThread = null;
}
或者可以参见http://hi.baidu.com/huqing7002/blog/item/fbf19c12273ac0c6c2fd78d4.html
注:
笔者经过试验,发现这个方法好像还是不行,到时还是没有启动所需要的程序
因此后来,我们利用WINDOW的TASK操作,定时的开启下IE,然后关闭,从而确保所有的SESSION没有丢失
但是实践中发现,如果该网站经常不被访问的话(默认是30分钟),该GLOBAL线程将被自动回收
因此为了保证程序在相应时间后,后台程序仍在工作,只需要对程序进行如下改造,关键是APPLICATION_END中的改造
System.Threading.Thread sisThread = null;
void Application_Start(object sender, EventArgs e)
private void ThreadFunction()
void Application_End(object sender, EventArgs e)
{
.);
//下面的代码是关键,可解决IIS应用程序池自动回收的问题
System.Threading.Thread.Sleep(1000);
//这里设置你的web地址,可以随便指向你的任意一个aspx页面甚至不存在的页面,目的是要激发Application_Start
string url = "http://localhost:80/Login.aspx";
System.Net.HttpWebRequest myHttpWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
System.Net.HttpWebResponse myHttpWebResponse = (System.Net.HttpWebResponse)myHttpWebRequest.GetResponse();
System.IO.Stream receiveStream = myHttpWebResponse.GetResponseStream();//得到回写的字节流
//sisThread.Abort();
//sisThread = null;
}
或者可以参见http://hi.baidu.com/huqing7002/blog/item/fbf19c12273ac0c6c2fd78d4.html
注:
笔者经过试验,发现这个方法好像还是不行,到时还是没有启动所需要的程序
因此后来,我们利用WINDOW的TASK操作,定时的开启下IE,然后关闭,从而确保所有的SESSION没有丢失
相关文章推荐
- asp.net后台自动任务-解决应用池回收问题(转)
- 【原创】构建高性能ASP.NET站点 第七章 如何解决内存的问题(前篇)—托管资源优化—垃圾回收机制深度剖析
- 原:解决ASP.NET在线程中无法Mappath的问题
- 【原创】构建高性能ASP.NET站点 第七章 如何解决内存的问题(前篇)—托管资源优化—垃圾回收机制深度剖析
- 【原创】构建高性能ASP.NET站点 第七章 如何解决内存的问题(前篇)—托管资源优化—垃圾回收机制深度剖析
- 常量,字段,构造方法 调试 ms 源代码 一个C#二维码图片识别的Demo 近期ASP.NET问题汇总及对应的解决办法 c# chart控件柱状图,改变柱子宽度 使用C#创建Windows服务 C#服务端判断客户端socket是否已断开的方法 线程 线程池 Task .NET 单元测试的利剑——模拟框架Moq
- asp.net计划任务-解决应用池回收问题
- Asp.net MVC 3 Razor 视图引擎 中使用@输出的内容都会被自动进行HTML编码 问题的解决办法
- asp.net定时执行任务-解决应用池回收问题----转载
- ASP.NET中应用UltraWebGrid控件时在Cell中按一下回车后不能自动转到下一单元格的问题及解决办法
- 构建高性能ASP.NET站点 第七章 如何解决内存的问题(前篇)―托管资源优化―垃圾回收机制深度剖析
- asp.net计划任务-解决应用池回收问题
- [转载]asp.net计划任务-解决应用池回收问题
- asp.net计划任务-解决应用池回收问题
- ASP.NET 计划任务,使用.net内部机制,解决应用池回收问题
- jquery解决asp.net gridview模版列只能在自动生成列之前的问题
- 解决ASP.net的GridView自动换行的问题
- 解决ASP.NET在IE10中Session丢失问题
- asp.net实现ftp上传代码(解决大文件上传问题)
- 彻底解决asp.net mvc 3 404错误码返回302的问题