一種運(yùn)行定時任務(wù)的方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種Asp.Net運(yùn)行定時任務(wù)的方法和系統(tǒng),其中,所述方法包括:創(chuàng)建任務(wù)激活器;獲取Asp.Net站點(diǎn)的應(yīng)用程序域,將所述任務(wù)激活器注冊在所述應(yīng)用程序域的應(yīng)用程序域卸載事件和應(yīng)用程序域父進(jìn)程退出事件中;當(dāng)所述Asp.Net站點(diǎn)被互聯(lián)網(wǎng)信息服務(wù)IIS回收時,執(zhí)行所述應(yīng)用程序域卸載事件或所述應(yīng)用程序域父進(jìn)程退出事件,使得所述任務(wù)激活器被執(zhí)行;通過所述任務(wù)激活器重新啟動所述Asp.Net站點(diǎn);在所述重新啟動的Asp.Net站點(diǎn)上創(chuàng)建并運(yùn)行Asp.Net定時任務(wù);本發(fā)明解決了在不降低IIS性能的前提下,實(shí)現(xiàn)定時任務(wù)穩(wěn)定運(yùn)行的問題。
【專利說明】一種運(yùn)行定時任務(wù)的方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,特別涉及一種運(yùn)行定時任務(wù)的方法及系統(tǒng)。
【背景技術(shù)】
[0002]很多時候,程序需要在后臺線程定時的執(zhí)行一些任務(wù),比如定時發(fā)送郵件。單獨(dú)的Windows Service在運(yùn)行定時任務(wù)時,其穩(wěn)定性較好,但是需要單獨(dú)安裝,造成了部署復(fù)雜的問題;因此,附加于輕量級的Asp.Net進(jìn)程之內(nèi)的后臺定時任務(wù)憑借其方便部署、不需要單獨(dú)安裝等優(yōu)勢,在網(wǎng)絡(luò)程序設(shè)計(jì)領(lǐng)域具有了廣泛的應(yīng)用;所述Asp.Net是由微軟在.Net框架中提供的用來開發(fā)網(wǎng)頁應(yīng)用程序的類庫,是動態(tài)服務(wù)器頁面Asp的.Net版本。
[0003]但是,由于Asp.Net進(jìn)程運(yùn)行于互聯(lián)網(wǎng)信息服務(wù)IIS之中,那么附加于Asp.Net進(jìn)程之內(nèi)的后臺定時任務(wù),就容易受到IIS應(yīng)用程序定時回收的影響,造成后臺定時任務(wù)不穩(wěn)定或后臺定時任務(wù)不運(yùn)行的結(jié)果。如果通過把Iis應(yīng)用程序定時回收的間隔時間設(shè)置無限長或空閑超時無限長,來避免IIS應(yīng)用程序得自動回收,就會降低IIS性能。
【發(fā)明內(nèi)容】
[0004]本發(fā)明提供的一種運(yùn)行定時任務(wù)的方法及系統(tǒng),以解決在不降低IIS性能的前提下,實(shí)現(xiàn)定時任務(wù)穩(wěn)定運(yùn)行的問題。
[0005]本發(fā)明提供一種Asp.Net運(yùn)行定時任務(wù)的方法,所述方法包括:
[0006]創(chuàng)建任務(wù)激活器;
[0007]獲取Asp.Net站點(diǎn)的應(yīng)用程序域,將所述任務(wù)激活器注冊在所述應(yīng)用程序域的應(yīng)用程序域卸載事件和應(yīng)用程序域父進(jìn)程退出事件中;
[0008]當(dāng)所述Asp.Net站點(diǎn)被互聯(lián)網(wǎng)信息服務(wù)IIS回收時,執(zhí)行所述應(yīng)用程序域卸載事件或所述應(yīng)用程序域父進(jìn)程退出事件,使得所述任務(wù)激活器被執(zhí)行;
[0009]通過所述任務(wù)激活器重新啟動所述Asp.Net站點(diǎn);
[0010]在所述重新啟動的Asp.Net站點(diǎn)上創(chuàng)建并運(yùn)行Asp.Net定時任務(wù)。
[0011]優(yōu)選的,所述將所述任務(wù)激活器注冊在所述應(yīng)用程序域的應(yīng)用程序域卸載事件和應(yīng)用程序域父進(jìn)程退出事件中之后,所述方法還包括:
[0012]所述應(yīng)用程序域卸載事件和應(yīng)用程序域父進(jìn)程退出事件分別獲取所述Asp.Net站點(diǎn)的Asp.Net站點(diǎn)參數(shù);相應(yīng)的,所述通過所述任務(wù)激活器重新啟動所述Asp.Net站點(diǎn)具體為:
[0013]將所述應(yīng)用程序域卸載事件或應(yīng)用程序域父進(jìn)程退出事件獲取的所述Asp.Net站點(diǎn)參數(shù)通知所述任務(wù)激活器,根據(jù)所述Asp.Net站點(diǎn)參數(shù)通過任務(wù)激活器重新啟動所述Asp.Net 站點(diǎn)。
[0014]優(yōu)選的,所述根據(jù)所述Asp.Net站點(diǎn)參數(shù)通過任務(wù)激活器重新啟動所述Asp.Net站點(diǎn)包括:創(chuàng)建Http客戶端,通過所述Http客戶端發(fā)送重新啟動所述Asp.Net站點(diǎn)的請求消息,所述請求消息中包含所述Asp.Net站點(diǎn)參數(shù);接收返回給所述Http客戶端的Http狀態(tài)返回碼;當(dāng)所述Http客戶端收到的所述Http狀態(tài)返回碼為200時,重新啟動所述Asp.Net站點(diǎn)。
[0015]優(yōu)選的,所述獲取Asp.Net站點(diǎn)的應(yīng)用程序域之前包括:判斷Asp.Net站點(diǎn)是否是第一次啟動,若不是,則退出;若是,則執(zhí)行所述獲取Asp.Net站點(diǎn)的應(yīng)用程序域。
[0016]優(yōu)選的,所述方法通過Http模塊接口實(shí)現(xiàn)。
[0017]本發(fā)明還提供一種Asp.Net運(yùn)行定時任務(wù)的系統(tǒng),所述系統(tǒng)包括:
[0018]創(chuàng)建單元,用于創(chuàng)建任務(wù)激活器;
[0019]注冊單元,用于獲取Asp.Net站點(diǎn)的應(yīng)用程序域,將所述任務(wù)激活器注冊在所述應(yīng)用程序域的應(yīng)用程序域卸載事件和應(yīng)用程序域父進(jìn)程退出事件中;
[0020]執(zhí)行單元,用于當(dāng)所述Asp.Net站點(diǎn)被互聯(lián)網(wǎng)信息服務(wù)IIS回收時,執(zhí)行所述應(yīng)用程序域卸載事件或所述應(yīng)用程序域父進(jìn)程退出事件,使得所述任務(wù)激活器被執(zhí)行;
[0021]重啟單元,用于通過所述任務(wù)激活器重新啟動Asp.Net站點(diǎn);
[0022]創(chuàng)建運(yùn)行單元,用于在所述重新啟動的Asp.Net站點(diǎn)上創(chuàng)建并運(yùn)行Asp.Net定時任務(wù)。
[0023]優(yōu)選的,所述系統(tǒng)還包括:參數(shù)獲取單元,用于所述將所述任務(wù)激活器注冊在所述應(yīng)用程序域的應(yīng)用程序域卸載事件和應(yīng)用程序域父進(jìn)程退出事件中之后,所述應(yīng)用程序域卸載事件與應(yīng)用程序域父進(jìn)程退出事件分別獲取所述Asp.Net站點(diǎn)的Asp.Net站點(diǎn)參數(shù);
[0024]相應(yīng)的,所述重啟單元,具體用于將所述應(yīng)用程序域卸載事件或應(yīng)用程序域父進(jìn)程退出事件獲取的所述Asp.Net站點(diǎn)參數(shù)通知所述任務(wù)激活器,根據(jù)所述Asp.Net站點(diǎn)參數(shù)通過任務(wù)激活器重新啟動所述Asp.Net站點(diǎn)。
[0025]優(yōu)選的,所述重啟單元包括:請求子單元,用于創(chuàng)建Http客戶端,通過所述Http客戶端發(fā)送重新啟動所述Asp.Net站點(diǎn)的請求消息,所述請求消息中包含所述Asp.Net站點(diǎn)參數(shù);接收子單元,用于接收返回給所述Http客戶端的Http狀態(tài)返回碼;啟動子單元,用于當(dāng)所述Http客戶端收到的所述Http狀態(tài)返回碼為200時,重新啟動Asp.Net站點(diǎn)。
[0026]優(yōu)選的,所述系統(tǒng)還包括:判定單元,用于所述獲取Asp.Net站點(diǎn)的應(yīng)用程序域之前,判斷Asp.Net站點(diǎn)是否是第一次啟動,若不是,則退出;若是,則執(zhí)行注冊單元。
[0027]優(yōu)選的,所述系統(tǒng)通過Http模塊接口實(shí)現(xiàn)。
[0028]本發(fā)明實(shí)施例的有益效果是:通過將任務(wù)激活器注冊在應(yīng)用程序域卸載事件與應(yīng)用程序域父進(jìn)程退出事件中,使得當(dāng)所述Asp.Net站點(diǎn)被互聯(lián)網(wǎng)信息服務(wù)IIS回收時,這兩個事件中的任一個事件被執(zhí)行,就會使得所述任務(wù)激活器被執(zhí)行,而所述任務(wù)激活器執(zhí)行時,使得Asp.Net站點(diǎn)被重新啟動,進(jìn)而使得Asp.Net定時任務(wù)被重新創(chuàng)建并執(zhí)行,實(shí)現(xiàn)了定時任務(wù)的穩(wěn)定運(yùn)行,也不影響Iis性能。
【專利附圖】
【附圖說明】
[0029]圖1為本發(fā)明一實(shí)施例的一種Asp.Net運(yùn)行定時任務(wù)的方法的流程圖;
[0030]圖2為本發(fā)明一實(shí)施例的一種Asp.Net運(yùn)行定時任務(wù)的方法的詳細(xì)流程圖;
[0031]圖3為本發(fā)明一實(shí)施例的一種Asp.Net運(yùn)行定時任務(wù)的系統(tǒng)的結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0032]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
[0033]如圖1所示,本發(fā)明提供一種Asp.Net運(yùn)行定時任務(wù)的方法,所述方法包括:
[0034]S110、創(chuàng)建任務(wù)激活器;
[0035]S120、獲取Asp.Net站點(diǎn)的應(yīng)用程序域AppDomain,將所述任務(wù)激活器注冊在所述應(yīng)用程序域的應(yīng)用程序域卸載事件AppDomain.DomainUnload和應(yīng)用程序域父進(jìn)程退出事件 AppDomain.ProcessExit 中;
[0036]S130、當(dāng)所述Asp.Net站點(diǎn)被互聯(lián)網(wǎng)信息服務(wù)IIS回收時,執(zhí)行所述應(yīng)用程序域卸載事件AppDomain.DomainUnload或所述應(yīng)用程序域父進(jìn)程退出事件AppDomain.ProcessExit,使得所述任務(wù)激活器被執(zhí)行;
[0037]S140、通過所述任務(wù)激活器重新啟動所述Asp.Net站點(diǎn);
[0038]S150、在所述重新啟動的Asp.Net站點(diǎn)上創(chuàng)建并運(yùn)行Asp.Net定時任務(wù)。
[0039]在本發(fā)明的一個實(shí)施例中,所述將所述任務(wù)激活器注冊在所述應(yīng)用程序域的應(yīng)用程序域卸載事件和應(yīng)用程序域父進(jìn)程退出事件中之后還包括:所述應(yīng)用程序域卸載事件和應(yīng)用程序域父進(jìn)程退出事件分別獲取Asp.Net站點(diǎn)參數(shù);相應(yīng)的,所述通過所述任務(wù)激活器重新啟動所述Asp.Net站點(diǎn)可以為:將所述應(yīng)用程序域卸載事件或應(yīng)用程序域父進(jìn)程退出事件獲取的所述Asp.Net站點(diǎn)參數(shù)通知所述任務(wù)激活器,根據(jù)所述Asp.Net站點(diǎn)參數(shù)通過任務(wù)激活器重新啟動所述Asp.Net站點(diǎn)。
[0040]在本發(fā)明的一個實(shí)施例中,所述根據(jù)所述Asp.Net站點(diǎn)參數(shù)通過任務(wù)激活器重新啟動所述Asp.Net站點(diǎn)包括:創(chuàng)建Http客戶端,通過所述Http客戶端發(fā)送重新啟動所述Asp.Net站點(diǎn)的請求消息,所述請求消息中包含所述Asp.Net站點(diǎn)參數(shù);接收返回給所述Http客戶端的Http狀態(tài)返回碼;所述Http客戶端收到的所述Http狀態(tài)返回碼為200時,重新啟動所述Asp.Net站點(diǎn)。
[0041]在本發(fā)明的一個實(shí)施例中,所述獲取Asp.Net站點(diǎn)的應(yīng)用程序域之前還包括:判斷Asp.Net站點(diǎn)是否是第一次啟動,若不是,則退出;若是,則執(zhí)行所述獲取Asp.Net站點(diǎn)的應(yīng)用程序域。
[0042]在本發(fā)明的一個實(shí)施例中,所述方法通過Http模塊接口實(shí)現(xiàn)。
[0043]本發(fā)明實(shí)施例的有益效果是:通過將任務(wù)激活器注冊在應(yīng)用程序域卸載事件與應(yīng)用程序域父進(jìn)程退出事件中,使得當(dāng)所述Asp.Net站點(diǎn)被互聯(lián)網(wǎng)信息服務(wù)IIS回收時,這兩個事件中的任一個事件被執(zhí)行,就會使得所述任務(wù)激活器被執(zhí)行,而所述任務(wù)激活器執(zhí)行時,使得Asp.Net站點(diǎn)被重新啟動,進(jìn)而使得Asp.Net定時任務(wù)被重新創(chuàng)建并執(zhí)行,實(shí)現(xiàn)了定時任務(wù)的穩(wěn)定運(yùn)行,也不影響Iis性能。
[0044]圖2為本發(fā)明提供的一種Asp.Net運(yùn)行定時任務(wù)的具體實(shí)施步驟:
[0045]S210、注冊Http模塊接口,通過該接口判斷Asp.Net站點(diǎn)是否是第一次啟動,若是,則創(chuàng)建任務(wù)調(diào)度器,若不是,則退出;
[0046]其中,一個計(jì)劃任務(wù)的工作單元為一個任務(wù),相應(yīng)執(zhí)行任務(wù)的程序就叫做任務(wù)調(diào)度器,任務(wù)調(diào)度器包含一個或多個任務(wù),每個任務(wù)實(shí)現(xiàn)任務(wù)接口 ISchedulerjob。
[0047]S220、創(chuàng)建定時任務(wù),輪詢驗(yàn)證是否執(zhí)行任務(wù)接口 IScheduler job,若是,則通過任務(wù)調(diào)度器啟動該定時任務(wù),若不是,則退出;
[0048]S230、創(chuàng)建任務(wù)激活器;
[0049]所述任務(wù)激活器的作用是當(dāng)所述Asp.Net站點(diǎn)被互聯(lián)網(wǎng)信息服務(wù)IIS回收時,請求Asp.Net站點(diǎn)使Asp.Net站點(diǎn)重啟。
[0050]S240、判斷Asp.Net站點(diǎn)是否是第一次啟動,若不是,則退出;若是,則獲取Asp.Net站點(diǎn)的應(yīng)用程序域,將所述任務(wù)激活器注冊在應(yīng)用程序域的應(yīng)用程序域卸載事件和應(yīng)用程序域父進(jìn)程退出事件中;
[0051]S250、所述應(yīng)用程序域卸載事件和應(yīng)用程序域父進(jìn)程退出事件分別獲取Asp.Net站點(diǎn)參數(shù);并將獲取的所述Asp.Net站點(diǎn)參數(shù)通知任務(wù)激活器;
[0052]其中,所述Asp.Net站點(diǎn)參數(shù)為Asp.Net站點(diǎn)地址與日志文件路徑參數(shù);
[0053]S260、當(dāng)所述Asp.Net站點(diǎn)被互聯(lián)網(wǎng)信息服務(wù)IIS回收時,執(zhí)行應(yīng)用程序域卸載事件或應(yīng)用程序域父進(jìn)程退出事件,使得所述任務(wù)激活器被執(zhí)行;
[0054]S270、所述任務(wù)激活器根據(jù)所述Asp.Net站點(diǎn)參數(shù)重新啟動所述Asp.Net站點(diǎn);具體包括:
[0055](I)創(chuàng)建Http客戶端,根據(jù)所述Asp.Net站點(diǎn)地址,通過Http客戶端向Asp.Net站點(diǎn)發(fā)送重新啟動所述Asp.Net站點(diǎn)的請求;
[0056](2)所述Asp.Net站點(diǎn)接收所述請求并新建一個應(yīng)用程序域,該新建的應(yīng)用程序域響應(yīng)所述Http客戶端的請求,并返回Http狀態(tài)返回碼;
[0057](3) Http客戶端接收到Http狀態(tài)返回碼后,判斷所述Http狀態(tài)返回碼是不是200 ;
[0058]當(dāng)所述Http狀態(tài)返回碼為200時,說明Asp.Net站點(diǎn)請求成功,則重新啟動所述Asp.Net站點(diǎn);如果所述Http狀態(tài)返回碼不是200,說明Asp.Net站點(diǎn)請求失敗,則所述Asp.Net站點(diǎn)不能重新啟動,則記錄錯誤的日志文件路徑參數(shù),并使當(dāng)前線程休眠一定時間后,繼續(xù)向Asp.Net站點(diǎn)發(fā)送請求,直到Http客戶端收到的Http狀態(tài)返回碼為200時退出;
[0059]優(yōu)選的,通常使得當(dāng)前線程休眠1s后,繼續(xù)向Asp.Net站點(diǎn)發(fā)送請求。
[0060]S280、在重新啟動的Asp.Net站點(diǎn)上重新創(chuàng)建并運(yùn)行Asp.Net定時任務(wù)。
[0061]當(dāng)所述Asp.Net站點(diǎn)被互聯(lián)網(wǎng)信息服務(wù)IIS回收后,加載于Asp.Net站點(diǎn)上的原定時任務(wù)也不存在;當(dāng)Asp.Net站點(diǎn)被重新啟動后,需要重新創(chuàng)建誤被回收的原定時任務(wù),其中定時任務(wù)的創(chuàng)建流程將會按照S210-S220重新執(zhí)行。
[0062]本實(shí)施例對S220與S230的執(zhí)行順序不做任何限定,在此不再贅述。
[0063]本發(fā)明實(shí)施例的有益效果是:通過將任務(wù)激活器注冊在應(yīng)用程序域卸載事件與應(yīng)用程序域父進(jìn)程退出事件中,使得當(dāng)所述Asp.Net站點(diǎn)被互聯(lián)網(wǎng)信息服務(wù)IIS回收時,這兩個事件中的任一個事件被執(zhí)行,就會使得所述任務(wù)激活器被執(zhí)行,而所述任務(wù)激活器執(zhí)行時,使得Asp.Net站點(diǎn)被重新啟動,進(jìn)而使得Asp.Net定時任務(wù)被重新創(chuàng)建并執(zhí)行,實(shí)現(xiàn)了定時任務(wù)的穩(wěn)定運(yùn)行,也不影響Iis性能。
[0064]如圖3所示,本發(fā)明還提供一種Asp.Net運(yùn)行定時任務(wù)的系統(tǒng)300,所述系統(tǒng)包括:
[0065]創(chuàng)建單元310,用于創(chuàng)建任務(wù)激活器;
[0066]注冊單元320,用于獲取Asp.Net站點(diǎn)的應(yīng)用程序域,將所述任務(wù)激活器注冊在所述應(yīng)用程序域的應(yīng)用程序域卸載事件和應(yīng)用程序域父進(jìn)程退出事件中;
[0067]執(zhí)行單元330,用于當(dāng)所述Asp.Net站點(diǎn)被互聯(lián)網(wǎng)信息服務(wù)IIS回收時,執(zhí)行所述應(yīng)用程序域卸載事件或所述應(yīng)用程序域父進(jìn)程退出事件,使得所述任務(wù)激活器被執(zhí)行;
[0068]重啟單元340,用于通過所述任務(wù)激活器重新啟動Asp.Net站點(diǎn);
[0069]創(chuàng)建運(yùn)行單元350,用于在所述重新啟動的Asp.Net站點(diǎn)上創(chuàng)建并運(yùn)行Asp.Net定時任務(wù)。
[0070]在本發(fā)明的一個實(shí)施例中,所述系統(tǒng)還包括:參數(shù)獲取單元,用于所述將所述任務(wù)激活器注冊在所述應(yīng)用程序域的應(yīng)用程序域卸載事件和應(yīng)用程序域父進(jìn)程退出事件中之后,所述應(yīng)用程序域卸載事件與應(yīng)用程序域父進(jìn)程退出事件分別獲取所述Asp.Net站點(diǎn)的Asp.Net站點(diǎn)參數(shù);
[0071]相應(yīng)的,所述重啟單元,具體用于將所述應(yīng)用程序域卸載事件或應(yīng)用程序域父進(jìn)程退出事件獲取的所述Asp.Net站點(diǎn)參數(shù)通知所述任務(wù)激活器,根據(jù)所述Asp.Net站點(diǎn)參數(shù)通過任務(wù)激活器重新啟動所述Asp.Net站點(diǎn)。
[0072]在本發(fā)明的一個實(shí)施例中,所述重啟單元包括:
[0073]請求子單元,用于創(chuàng)建Http客戶端,通過所述Http客戶端發(fā)送重新啟動所述Asp.Net站點(diǎn)的請求消息,所述請求消息中包含所述Asp.Net站點(diǎn)參數(shù);
[0074]接收子單元,用于接收返回給所述Http客戶端的Http狀態(tài)返回碼;
[0075]啟動子單元,用于當(dāng)所述Http客戶端收到的所述Http狀態(tài)返回碼為200時,重新啟動Asp.Net站點(diǎn)。
[0076]在本發(fā)明的一個實(shí)施例中,所述系統(tǒng)還包括:
[0077]判定單元,用于所述獲取Asp.Net站點(diǎn)的應(yīng)用程序域之前,判斷Asp.Net站點(diǎn)是否是第一次啟動,若不是,則退出;若是,則執(zhí)行注冊單元320。
[0078]在本發(fā)明的一個實(shí)施例中,所述系統(tǒng)通過Http模塊接口實(shí)現(xiàn)。
[0079]本發(fā)明實(shí)施例的有益效果是:通過將任務(wù)激活器注冊在應(yīng)用程序域卸載事件與應(yīng)用程序域父進(jìn)程退出事件中,使得當(dāng)所述Asp.Net站點(diǎn)被互聯(lián)網(wǎng)信息服務(wù)IIS回收時,這兩個事件中的任一個事件被執(zhí)行,就會使得所述任務(wù)激活器被執(zhí)行,而所述任務(wù)激活器執(zhí)行時,使得Asp.Net站點(diǎn)被重新啟動,進(jìn)而使得Asp.Net定時任務(wù)被重新創(chuàng)建并執(zhí)行,實(shí)現(xiàn)了定時任務(wù)的穩(wěn)定運(yùn)行,也不影響Iis性能。
[0080]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。
【權(quán)利要求】
1.一種Asp.Net運(yùn)行定時任務(wù)的方法,其特征在于,所述方法包括: 創(chuàng)建任務(wù)激活器; 獲取Asp.Net站點(diǎn)的應(yīng)用程序域,將所述任務(wù)激活器注冊在所述應(yīng)用程序域的應(yīng)用程序域卸載事件和應(yīng)用程序域父進(jìn)程退出事件中; 當(dāng)所述Asp.Net站點(diǎn)被互聯(lián)網(wǎng)信息服務(wù)IIS回收時,執(zhí)行所述應(yīng)用程序域卸載事件或所述應(yīng)用程序域父進(jìn)程退出事件,使得所述任務(wù)激活器被執(zhí)行; 通過所述任務(wù)激活器重新啟動所述Asp.Net站點(diǎn); 在所述重新啟動的Asp.Net站點(diǎn)上創(chuàng)建并運(yùn)行Asp.Net定時任務(wù)。
2.如權(quán)利要求1所述的方法,其特征在于,所述將所述任務(wù)激活器注冊在所述應(yīng)用程序域的應(yīng)用程序域卸載事件和應(yīng)用程序域父進(jìn)程退出事件中之后,所述方法還包括: 所述應(yīng)用程序域卸載事件和應(yīng)用程序域父進(jìn)程退出事件分別獲取所述Asp.Net站點(diǎn)的Asp.Net站點(diǎn)參數(shù); 相應(yīng)的,所述通過所述任務(wù)激活器重新啟動所述Asp.Net站點(diǎn)具體為: 將所述應(yīng)用程序域卸載事件或應(yīng)用程序域父進(jìn)程退出事件獲取的所述Asp.Net站點(diǎn)參數(shù)通知所述任務(wù)激活器,根據(jù)所述Asp.Net站點(diǎn)參數(shù)通過任務(wù)激活器重新啟動所述Asp.Net站點(diǎn)。
3.如權(quán)利要求2所述的方法,其特征在于,所述根據(jù)所述Asp.Net站點(diǎn)參數(shù)通過任務(wù)激活器重新啟動所述Asp.Net站點(diǎn)包括: 創(chuàng)建Http客戶端,通過所述Http客戶端發(fā)送重新啟動所述Asp.Net站點(diǎn)的請求消息,所述請求消息中包含所述Asp.Net站點(diǎn)參數(shù); 接收返回給所述Http客戶端的Http狀態(tài)返回碼; 當(dāng)所述Http客戶端收到的所述Http狀態(tài)返回碼為200時,重新啟動所述Asp.Net站點(diǎn)。
4.如權(quán)利要求1所述的方法,其特征在于,所述獲取Asp.Net站點(diǎn)的應(yīng)用程序域之前還包括: 判斷Asp.Net站點(diǎn)是否是第一次啟動,若不是,則退出;若是,則執(zhí)行所述獲取Asp.Net站點(diǎn)的應(yīng)用程序域。
5.如權(quán)利要求1所述的方法,其特征在于,所述方法通過Http模塊接口實(shí)現(xiàn)。
6.一種Asp.Net運(yùn)行定時任務(wù)的系統(tǒng),其特征在于,所述系統(tǒng)包括: 創(chuàng)建單元,用于創(chuàng)建任務(wù)激活器; 注冊單元,用于獲取Asp.Net站點(diǎn)的應(yīng)用程序域,將所述任務(wù)激活器注冊在所述應(yīng)用程序域的應(yīng)用程序域卸載事件和應(yīng)用程序域父進(jìn)程退出事件中; 執(zhí)行單元,用于當(dāng)所述Asp.Net站點(diǎn)被互聯(lián)網(wǎng)信息服務(wù)IIS回收時,執(zhí)行所述應(yīng)用程序域卸載事件或所述應(yīng)用程序域父進(jìn)程退出事件,使得所述任務(wù)激活器被執(zhí)行; 重啟單元,用于通過所述任務(wù)激活器重新啟動Asp.Net站點(diǎn); 創(chuàng)建運(yùn)行單元,用于在所述重新啟動的Asp.Net站點(diǎn)上創(chuàng)建并運(yùn)行Asp.Net定時任務(wù)。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 參數(shù)獲取單元,用于所述將所述任務(wù)激活器注冊在所述應(yīng)用程序域的應(yīng)用程序域卸載事件和應(yīng)用程序域父進(jìn)程退出事件中之后,所述應(yīng)用程序域卸載事件與應(yīng)用程序域父進(jìn)程退出事件分別獲取所述Asp.Net站點(diǎn)的Asp.Net站點(diǎn)參數(shù); 相應(yīng)的,所述重啟單元,具體用于將所述應(yīng)用程序域卸載事件或應(yīng)用程序域父進(jìn)程退出事件獲取的所述Asp.Net站點(diǎn)參數(shù)通知所述任務(wù)激活器,根據(jù)所述Asp.Net站點(diǎn)參數(shù)通過任務(wù)激活器重新啟動所述Asp.Net站點(diǎn)。
8.如權(quán)利要求7所述的系統(tǒng),其特征在于,所述重啟單元包括: 請求子單元,用于創(chuàng)建Http客戶端,通過所述Http客戶端發(fā)送重新啟動所述Asp.Net站點(diǎn)的請求消息,所述請求消息中包含所述Asp.Net站點(diǎn)參數(shù); 接收子單元,用于接收返回給所述Http客戶端的Http狀態(tài)返回碼; 啟動子單元,用于當(dāng)所述Http客戶端收到的所述Http狀態(tài)返回碼為200時,重新啟動Asp.Net 站點(diǎn)。
9.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 判定單元,用于所述獲取Asp.Net站點(diǎn)的應(yīng)用程序域之前,判斷Asp.Net站點(diǎn)是否是第一次啟動,若不是,則退出;若是,則執(zhí)行注冊單元。
10.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述系統(tǒng)通過Http模塊接口實(shí)現(xiàn)。
【文檔編號】G06F9/445GK104516745SQ201310451795
【公開日】2015年4月15日 申請日期:2013年9月27日 優(yōu)先權(quán)日:2013年9月27日
【發(fā)明者】朱志波 申請人:北京新媒傳信科技有限公司