您的位置:首页 > 编程语言 > ASP

解决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没有丢失
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐