网站发布后在IIS上定时执行任务

可以再全局变量实现,不打开页面也可以

Global.asax

void Application_Start(object sender, EventArgs e) 
    {
        // 在应用程序启动时运行的代码 这里设置34个小时间隔 122400000 300000
        System.Timers.Timer myTimer = new System.Timers.Timer(122400000);//修改时间间隔
        //关联事件
        myTimer.Elapsed += new System.Timers.ElapsedEventHandler(AutoExec);
        myTimer.AutoReset = true;
        myTimer.Enabled = true;
       
    }
    
    /// <summary>
    /// 定时执行的代码
    /// </summary>
    private void AutoExec(object sender,System.Timers.ElapsedEventArgs e)
    {
       var webNewsAction = new WebApp.Common.WebNewsCollector();//新闻采集
       webNewsAction.AutoInsert();
       
    }
    void Application_End(object sender, EventArgs e) 
    {
        //  在应用程序关闭时运行的代码
        //如果出错,删除下面代码
        //下面的代码是关键,可解决IIS应用程序池自动回收的问题
        System.Threading.Thread.Sleep(1000);
        这里设置你的web地址,可以随便指向你的任意一个aspx页面甚至不存在的页面,目的是要激发Application_Start
        string url = "http://www.xxxxx.com";
        string url = "http://localhost:82/111.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();//得到回写的字节流

        //在此添加其它代码
    }
可以解决iis自动回收

在ASP.NET  Application中加入某个定时任务,那想必一定是用一个线程在不停地做定时计算

在自己的ASP.NET应用程序中加入了Quartz.NET框架

 

夜间或者网站在经过无访问阶段后,后台调度的线程和计算任务都停止了,如果你抓取了Application_End事件,会发现这个事件居然被调用了。


那一定是IIS的应用程序池回收的机制在作怪了。因为IIS的默认设置里面,如果一个站点所处的应用程序池超过一段时间没有被访问或者请求,IIS就会自动回收这个程序池,并且把进程杀掉。那Quartz的定时任务也自动停止了。


但是我们可以通过设置应用程序池参数使其不会被简单的自动回收(有些情况无法避免,比如热部署的站点,错误数量超限等等)


在IIS中找到这个站点所用的程序池,点击“高级设置...”

在打开的列表中更改以下设置:

回收——固定时间间隔(分钟) 改为 0

        ——虚拟/专用内存限制(KB) 改为 0

进程模型——闲置超时(分钟) 改为 0


这样子,一般情况下程序池就不会被自动回收了,后台Quartz 的定时任务就会正常工作



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值