日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

IIS定時(shí)任務(wù)

 實(shí)力決定地位 2013-08-30
時(shí)候會(huì)要求一個(gè)或者多個(gè)任務(wù)在一定的時(shí)間或者一定的時(shí)間間隔內(nèi)計(jì)劃進(jìn)行,比如定時(shí)備份或同步數(shù)據(jù)庫(kù),定時(shí)發(fā)送電子郵件,定期處理用戶狀態(tài)信息,支付系統(tǒng)中定期同步異常賬單等等,我們稱之為計(jì)劃任務(wù)。實(shí)現(xiàn)計(jì)劃任務(wù)的方法也有很多,可以采用SQLAgent執(zhí)行存儲(chǔ)過(guò)程,采用Windows任務(wù)調(diào)度程序來(lái)實(shí)現(xiàn),也可以使用Windows服務(wù)來(lái)完成我們的計(jì)劃任務(wù),這些方法都是不錯(cuò)的解決方案。但是,以上這些都需要有服務(wù)器的權(quán)限才能進(jìn)行,而對(duì)于虛擬主機(jī)客戶使用的Web應(yīng)用程序來(lái)說(shuō),這些方法實(shí)現(xiàn)起來(lái)并不是很簡(jiǎn)單的,主機(jī)服務(wù)提供商或者不能直接提供這樣的服務(wù),或者需要你支付許多額外的費(fèi)用。 看過(guò)一些這方面的文章,發(fā)現(xiàn)有一個(gè)共同的缺點(diǎn):IIS運(yùn)行到一定時(shí)期,計(jì)劃任務(wù)就停止了。查找原因發(fā)現(xiàn)是IIS的應(yīng)用程序池定期回收導(dǎo)致計(jì)劃任務(wù)停止。本文的這個(gè)方法可以解決應(yīng)用程序池回收問(wèn)題。
請(qǐng)看代碼:


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;
//手機(jī)主題http://www.
//Email:haolinks#163.com
//Author:漫步甜蜜
namespace
{
public class Global : System.Web.HttpApplication
{

protected void Application_Start(object sender, EventArgs e)
{
//定義定時(shí)器
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()
{
//在這里寫你需要執(zhí)行的任務(wù)
}


protected void Application_End(object sender, EventArgs e)
{
Log.SaveNote(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":Application End!");

//下面的代碼是關(guān)鍵,可解決IIS應(yīng)用程序池自動(dòng)回收的問(wèn)題
Thread.Sleep(1000);
//這里設(shè)置你的web地址,可以隨便指向你的任意一個(gè)aspx頁(yè)面甚至不存在的頁(yè)面,目的是要激發(fā)Application_Start
//string url = "http://www.";手機(jī)主題
string url = "http://localhost:82/111.aspx";
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
Stream receiveStream = myHttpWebResponse.GetResponseStream();//得到回寫的字節(jié)流

}
}
}

原理:Global.asax 可以是asp.net中應(yīng)用程序或會(huì)話事件處理程序,我們用到了Application_Start(應(yīng)用程序開(kāi)始事件)和Application_End(應(yīng)用程序結(jié)束事件)。當(dāng)應(yīng)用程序開(kāi)始時(shí),啟動(dòng)一個(gè)定時(shí)器,用來(lái)定時(shí)執(zhí)行任務(wù)YourTask()方法,這個(gè)方法里面可以寫上需要調(diào)用的邏輯代碼,可以是單線程和多線程。當(dāng)應(yīng)用程序結(jié)束時(shí),如IIS的應(yīng)用程序池回收,讓asp.net去訪問(wèn)當(dāng)前的這個(gè)web地址,本地測(cè)試的時(shí)候?qū)懕镜氐刂罚?A href="http://localhost:82/111.aspx">http://localhost:82/111.aspx,到正式生產(chǎn)環(huán)境,可以改成你的web地址,如手機(jī)主題:http://www.等。這里需要訪問(wèn)一個(gè)aspx頁(yè)面,這樣就可以重新激活應(yīng)用程序。Log類是一個(gè)記錄日志的一個(gè)類,下面是測(cè)試時(shí)生成的日志信息:
================================================================
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!
從日志中發(fā)現(xiàn),當(dāng)手動(dòng)回收IIS的應(yīng)用程序池之后,計(jì)劃任務(wù)還在執(zhí)行,說(shuō)明我們的目的達(dá)到了。
如果將Application_End中的代碼注釋掉,會(huì)發(fā)現(xiàn)Application End之后,計(jì)劃任務(wù)停止工作了,如下:
================================================================
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!

局限性:可以解決應(yīng)用程序池自動(dòng)或者手動(dòng)回收,但是無(wú)法解決IIS重啟或者web服務(wù)器重啟的問(wèn)題,當(dāng)然這種情況出現(xiàn)的時(shí)候不多,而且如果有人訪問(wèn)你的網(wǎng)站的時(shí)候,又會(huì)自動(dòng)激活計(jì)劃任務(wù)了。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多