0

我已經部署IIS服務器上的ASP.NET MVC的Web應用程序,如何在IIS服務器上在後臺運行線程,即使沒有任何對Web應用程序的請求?

在該應用程序,我做了一件事情,例如像下面的獨立的線程:

while (true) 
{ 
    doSomeJobs(); 
    Thread.Sleep(TimeSpan.FromMinutes(5)); 
} 

開始這個線程Application_Start() 如此似乎它永遠不會停止每一輪工作之間的5分鐘睡眠。

首先看起來工作得很好,但在第二天我檢查日誌不工作,因爲我預計,它已停止工作很長一段時間。

然後,當我再次嚮應用發送請求時,它會再次開始工作。

那麼我錯過了什麼?即使沒有任何對應用程序的請求,是否可以在每個特定時間在後臺運行線程?這就像一個計劃任務?

+0

不知道你是什麼確切的使用情況。但它聽起來像一個總是運行的服務(Windows服務)的需要 – Shyju

+0

@Shyju是的,我該怎麼做? –

+1

如果您想要一個計劃任務,Windows允許您直接創建,https://technet.microsoft.com/en-us/library/cc748993(v=ws.11).aspx。如果您想更好地控制代碼的運行方式,可以創建一個Windows服務應用程序,https://docs.microsoft.com/en-us/dotnet/framework/windows-services/walkthrough-creating-a-windows-service在組件中的應用程序設計器不要打擾IIS/ASP.NET,因爲它們不是爲你的目標而設計的。 –

回答

0

最後,我這才發現一個共同的問題,

這是因爲IIS會在特定的時間,如果沒有人要求你的應用程序停止你的過程。

讓您的應用程序保持活躍狀態​​。

  1. 創建一個新的應用程序池,該應用程序池需要存放永久存在的應用程序。
  2. 選擇該應用程序池並單擊高級設置。

enter image description here

  • 回收設置定時時間間隔
  • enter image description here

  • 根據設置空閒超時(分鐘)到最大(43200)過程模型
  • enter image description here

    相關問題