2011-07-24 75 views
1

我正在創建ASP.NET .NET 4.0網站,並且此網站的一部分要求存在「始終運行」的應用程序。通常我會爲此創建一個Windows服務,但該網站將託管在共享主機環境中,除非我獲得虛擬服務器,否則這不是一種可能性。始終在ASP.NET和外部網絡託管中運行應用程序

我的第一個想法是有一個線程在後臺運行,它會在Application_Start上創建並在Application_End上銷燬。我環顧四周,這看起來可能是一種選擇,但我當然必須擊中該網站才能調用Application_Start,並且如果關聯的AppPool被重新使用,那麼這個過程將不得不重複(所以我相信?!?)。

在一個正常的ASP.NET網站中,這些看起來有可能嗎?

+0

這已經在這裏問了很多,雖然我正在努力找到正規的問題/答案。 – andynormancx

+1

這是我在想我想的問題http://stackoverflow.com/questions/1395358/ – andynormancx

回答

1

最後,我有一個獨立的線程,坐着等待信號被設置。一旦設置它然後它的工作。爲確保線程始終處於活動狀態,我爲「虛擬」頁面發出HTTP請求,以確保如果AppPool已回收,則會觸發Application_Start事件並重新啓動線程。

0

它依賴於「總是運行的應用程序」究竟意味着什麼:

如果它是一個實時的服務,但它仍然是有意義的運行它作爲單獨的進程,即使它可能有一個Web前端。這是因爲ASP .NET服務器是由微軟設計的,用於內存使用或多線程等許多方面的特定任務(用於運行Web應用程序,渲染頁面等)。在這種情況下,我寧願至少使用VDS。另一種情況是,當它是一個週期性的(比如每小時)一個簡單的工作的驚人的應用程序 - 也許你的共享主機有一些機制來觸發一個特定的頁面來做一些工作(正如我的主機一樣)。例如,我有一個ASP .NET頁面,用於監視我最喜歡的樂隊的巡演日期列表,並在他們要在我的城鎮中進行演出時發送電子郵件通知 - 它每隔4小時由主持人觸發。