每晚11点自动生成Excel,并发送至邮箱

      我做了一个自动发送邮件的功能,使用Timer计时器来监测,想用间隔一段时间自动执行,利用global.asax后台执行,自动生成Excel,并发送至指定邮箱。发现发布至IIS后不自动执行,根本就没有进去Timer事件中去。

解决办法:发布到IIS后需要对所发布的网站进行浏览,这样才会启动Global.aspx,才会执行Timer监听事件。

    protected void Application_Start(Object sender, EventArgs e)
        {

    System.Timers.Timer myTimer = new System.Timers.Timer(60000 * 5);//设计时间间隔,如果10分钟执行一次就为60000*10
            myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed);
            myTimer.AutoReset = true;
            myTimer.Enabled = true;

}

  protected void Application_End(Object sender, EventArgs e)
        {
            //下面的代码是关键,可解决IIS应用程序池自动回收的问题  
            Thread.Sleep(1000);

            //这里设置你的web地址,可以随便指向你的任意一个aspx页面甚至不存在的页面,目的是要激发Application_Start  
            string url = "http://www.baidu.com";
            HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
            HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
            Stream receiveStream = myHttpWebResponse.GetResponseStream();//得到回写的字节流  
        }

  说明:IIS应用程序池会自动回收,回收后将不在执行Global.aspx中的事件,回收时间是1740分钟(我的是1740m),Application_End中如上可以解决IIS自动回收问题,通过Create url激发Application_Start 。但是这样仍然不能够解决IIS重启或者服务器重启的问题,发生这种情况时只要有人访问该网站就可以启动Application_Start 。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值