2010-06-08 109 views
1

我想在應用程序啓動時啓動一個System.Threading.Timer(可能部署是正確的詞)。我看到你可以使用Application_Start(),但這只是fired once the first request comes to the application。我需要定時器在應用程序運行後立即啓動,以便即使用戶沒有與網站進行交互,它也可以檢查要處理的工作。如何讓應用程序在啓動計時器後啓動?Web應用程序啓動時啓動計時器

+0

quick'n'dirty解決方案:在您的安裝程序中擊中網站 – 2010-06-08 19:57:56

+2

如果您的設置允許,Windows服務可能會是工作進程的更好解決方案。 – Justin 2010-06-08 20:08:00

回答

4

當應用程序啓動並運行時,應用程序啓動實際上會啓動。您遇到的問題是IIS在收到第一個請求之前並不真正啓動應用程序。

另一個重要的事情要知道:IIS可以關閉你的應用程序由於不活動。如果你有需要一直運行的東西,你可能會尋找與ASP.NET應用程序不同的工具。也許是Windows服務,甚至是一個計劃任務。

+1

我同意。 Web應用程序不適用於用戶未啓動的任務。 – 2010-06-08 20:01:03

8

您可以使用新的ASP.Net 4模式AlwaysRunning。這樣,它不會等到第一個請求開始

<applicationPools> 
    <add name="MyAppWorkerProcess" managedRuntimeVersion="v4.0" 
     startMode="AlwaysRunning" /> 
</applicationPools> 

見:http://www.asp.net/learn/whitepapers/aspnet4

0

這是正常現象 - 應用程序需要由某人請求頁面被「觸發」。

在IIS 7.5及更高版本(例如WIN 2008/WIN7),還有一個功能,自動做到這一點 - 看到這個鏈接的詳細信息:http://visualstudiomagazine.com/articles/2010/02/18/preloading-aspnet-applications.aspx

在其他ASP.NET Web服務器就像一個我們公司是生產(在www.neokernel.com上在線),這是通過指定將使用服務器配置文件預先加載的某些頁面來完成的。本質上,頁面被傳遞到ASP.NET處理管道,並在任何人請求與該頁面關聯的URL之前編譯/啓動。

0

一種方法是使用JavaScript setInterval方法啓動計時器。這需要在每個頁面上進行,以便將其放入母版頁中。

相關問題