亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

asp.net自動執行任務-解決應用池回收問題

2019-11-17 04:28:02
字體:
來源:轉載
供稿:網友

在復雜的業務應用程序中,有時候會要求一個或者多個任務在一定的時間或者一定的時間間隔內計劃進行,比如定時備份或同步數據庫,定時發送電子郵件,定期處理用戶狀態信息,支付系統中定期同步異常賬單等等,我們稱之為計劃任務。實現計劃任務的方法也有很多,可以采用SQLAgent執行存儲過程,采用Windows任務調度程序來實現,也可以使用Windows服務來完成我們的計劃任務,這些方法都是不錯的解決方案。但是,以上這些都需要有服務器的權限才能進行,而對于虛擬主機客戶使用的Web應用程序來說,這些方法實現起來并不是很簡單的,主機服務提供商或者不能直接提供這樣的服務,或者需要你支付許多額外的費用。 看過一些這方面的文章,發現有一個共同的缺點:IIS運行到一定時期,計劃任務就停止了。查找原因發現是IIS的應用程序池定期回收導致計劃任務停止。本文的這個方法可以解決應用程序池回收問題。
請看代碼:
Global.asax.cs
 
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.sessionState;
using System.Timers;
using System.Net;
using System.IO;
using System.Text;
using System.Threading;
//手機主題 http://www.qumiao.com
//Email:haolinks#163.com
//Author:漫步甜蜜
namespace qumiao.com
{
    public class Global : System.Web.Httpapplication
    {
 
        PRotected void Application_Start(object sender, EventArgs e)
        {
            //定義定時器
            System.Timers.Timer myTimer = new System.Timers.Timer(5000);
            myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed);
            myTimer.Enabled = true;
            myTimer.AutoReset = true;
        }
 
        void myTimer_Elapsed(object source, ElapsedEventArgs e)
        {
            try
            {
                Log.SaveNote(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":AutoTask is Working!");
                YourTask();
            }
            catch (Exception ee)
            {
                Log.SaveException(ee);
            }
        }
 
        void YourTask()
        {
            //在這里寫你需要執行的任務
        }
 

        protected void Application_End(object sender, EventArgs e)
        {
            Log.SaveNote(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":Application End!");
 
            //下面的代碼是關鍵,可解決IIS應用程序池自動回收的問題
            Thread.Sleep(1000);
            //這里設置你的web地址,可以隨便指向你的任意一個aspx頁面甚至不存在的頁面,目的是要激發Application_Start
            //string url = "            string url = "http://localhost:82/111.aspx";
            HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
            HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
            Stream receiveStream = myHttpWebResponse.GetResponseStream();//得到回寫的字節流
           
        }
    }
}
 
 
原理:Global.asax 可以是asp.net中應用程序或會話事件處理程序,我們用到了Application_Start(應用程序開始事件)和Application_End(應用程序結束事件)。當應用程序開始時,啟動一個定時器,用來定時執行任務YourTask()方法,這個方法里面可以寫上需要調用的邏輯代碼,可以是單線程和多線程。當應用程序結束時,如IIS的應用程序池回收,讓asp.net去訪問當前的這個web地址,本地測試的時候寫本地地址,如http://localhost:82/111.aspx,到正式生產環境,可以改成你的web地址,如手機主題http://www.qumiao.com http://www.devdao.com等。這里需要訪問一個aspx頁面,這樣就可以重新激活應用程序。Log類是一個記錄日志的一個類,下面是測試時生成的日志信息:
================================================================
2008-10-30 17:46:10:AutoTask is Working!
2008-10-30 17:46:15:AutoTask is Working!
2008-10-30 17:46:20:AutoTask is Working!
2008-10-30 17:46:23:Application End!
2008-10-30 17:46:29:AutoTask is Working!
2008-10-30 17:46:34:AutoTask is Working!
從日志中發現,當手動回收IIS的應用程序池之后,計劃任務還在執行,說明我們的目的達到了。
如果將Application_End中的代碼注釋掉,會發現Application End之后,計劃任務停止工作了,如下:
================================================================
2008-10-30 18:01:34:AutoTask is Working!
2008-10-30 18:01:39:AutoTask is Working!
2008-10-30 18:01:44:AutoTask is Working!
2008-10-30 18:01:46:Application End!
 
局限性:可以解決應用程序池自動或者手動回收,但是無法解決IIS重啟或者web服務器重啟的問題,當然這種情況出現的時候不多,而且如果有人訪問你的網站的時候,又會自動激活計劃任務了。
 
代碼下載:http://www.qumiao.com/down/autotask.rar
 
一點小小的經驗與大家分享,歡迎大家改進和轉載。做為對作者的鼓勵,希望保留版權信息,不勝感激!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人全部免费| 欧日韩不卡在线视频| 最近2019好看的中文字幕免费| 亚洲经典中文字幕| 成人美女av在线直播| 日韩毛片在线看| 国产精品久久久久久久久久久不卡| 91高潮在线观看| 俺去亚洲欧洲欧美日韩| 成人午夜黄色影院| 亚洲影视中文字幕| 97婷婷涩涩精品一区| 亚洲激情视频在线| 国产97在线播放| 日韩在线视频中文字幕| 国产精品视频播放| 亚洲丁香婷深爱综合| 66m—66摸成人免费视频| 日韩电影第一页| 精品久久久久久久久久久久久久| 黄色一区二区在线| 亚洲国产精品久久久久| 国产精品视频一区二区高潮| 久久免费在线观看| 热久久视久久精品18亚洲精品| 欧美高清视频在线播放| 日日噜噜噜夜夜爽亚洲精品| 亚洲人永久免费| 国产精品久久9| 成人免费看片视频| 亚洲天堂网站在线观看视频| 欧美一区视频在线| 视频在线观看一区二区| 久久久久久免费精品| 精品国产视频在线| 91av在线播放视频| 国产美女精品视频| 国产精品免费一区| 国产精品www色诱视频| 欧美成人精品在线观看| 国语自产偷拍精品视频偷| 亚洲国内高清视频| 精品成人国产在线观看男人呻吟| 亚洲深夜福利视频| 欧美肥臀大乳一区二区免费视频| 亚洲欧洲国产一区| 亚洲午夜性刺激影院| 成人性生交大片免费观看嘿嘿视频| 岛国av一区二区在线在线观看| 中文字幕九色91在线| 中国日韩欧美久久久久久久久| 欧美巨乳在线观看| 久久精品国产亚洲| 久久久亚洲影院你懂的| 欧美日韩精品在线播放| 在线视频精品一| 日韩亚洲第一页| 欧美精品久久久久久久免费观看| 性欧美xxxx视频在线观看| 精品久久久视频| 成人网在线视频| 国产精品成人播放| 久久91精品国产| 在线亚洲男人天堂| 久久国产精品亚洲| 国产日韩精品入口| 亚洲女人初尝黑人巨大| 欧美精品久久久久久久| 国产精品综合不卡av| 日韩亚洲在线观看| 国产精品美女视频网站| 亚洲激情视频在线观看| 亚洲欧美日韩中文视频| 九九精品视频在线观看| 欧美性xxxxxxxxx| 亚洲国语精品自产拍在线观看| 国产成人精品久久| 亚洲最新在线视频| 国产精品高潮呻吟久久av无限| 91亚洲国产成人久久精品网站| 久久久精品网站| 一区二区三区视频在线| 国产丝袜一区视频在线观看| 日韩最新av在线| 亚洲色图第三页| 久久久久久香蕉网| 国产亚洲精品91在线| 最近中文字幕mv在线一区二区三区四区| 91av视频在线| 91在线色戒在线| 九色成人免费视频| 欧美肥老太性生活视频| 久久久久久91香蕉国产| www.午夜精品| 国产精品久久久久久久app| 国产日韩欧美一二三区| 91午夜理伦私人影院| 精品一区电影国产| 亚洲精品视频播放| 亚洲精品国产精品国产自| 国产精品国产亚洲伊人久久| 中文字幕免费国产精品| 欧美日韩综合视频| 成人免费淫片aa视频免费| 在线观看日韩视频| 国产大片精品免费永久看nba| 成人国产亚洲精品a区天堂华泰| 色综合视频一区中文字幕| 韩剧1988在线观看免费完整版| 岛国精品视频在线播放| 在线观看久久av| 高清欧美性猛交xxxx| 欧美国产在线电影| 色噜噜国产精品视频一区二区| 九九久久国产精品| 中文字幕国产日韩| 色综合视频一区中文字幕| 日韩免费不卡av| 欧美最猛性xxxxx免费| 国产精品第七影院| 少妇高潮久久久久久潘金莲| 亚洲电影中文字幕| 精品久久久久久久久国产字幕| 日韩精品一二三四区| 国产va免费精品高清在线观看| 成人网页在线免费观看| 国产一区香蕉久久| 欧美电影在线观看完整版| 久久国产加勒比精品无码| 久久精品男人天堂| 国产精品1区2区在线观看| 成人精品视频在线| 高跟丝袜一区二区三区| 亚洲伊人成综合成人网| 久久中文字幕一区| 欧美日韩在线视频一区| 国产精品久久久| 亚洲国内精品在线| 91国内精品久久| 精品亚洲一区二区三区在线播放| 亚洲国产精品yw在线观看| 中文字幕精品一区久久久久| 久久国产精品久久久久久久久久| 韩国欧美亚洲国产| 国产精品va在线播放| 欧美黑人性视频| 国产一区二区三区视频| 国产美女91呻吟求| 伊人久久大香线蕉av一区二区| 久久成年人视频| 日韩大片在线观看视频| 日韩精品在线观看网站| 亚洲精品免费一区二区三区| 欧美大片在线看免费观看| 亚洲一区二区三区sesese| 亚洲国产精品视频在线观看| 久久精品国产精品| 久久精品成人一区二区三区| 久久免费视频在线观看| xx视频.9999.com| 91亚洲va在线va天堂va国| 欧美日韩亚洲视频一区| 91在线视频成人| 精品动漫一区二区|