我在我的asp網站中使用石英,我在application_start方法中初始化調度器,並在application_end方法中關閉,我的觸發器每天都會觸發,但是如果有一段時間沒有請求,我發現我的調度器會自動關閉,所以我的背景工作將不會觸發,有沒有更好的方法來保持調度程序的生命週期,只有當服務器停止時才關閉?如何保持石英.net的調度程序活着?
回答
一般來說,如果您需要可靠的日程安排,您不應該在網站中執行此操作。
正如您發現的,工作進程將在一段時間後關閉。即使您強制工作進程始終運行,也有可能導致其終止的條件。這不是一個好主意。
相反,你應該編寫一個Windows服務並運行quartz.net。
如果您無法安裝服務(假設您處於共享主機環境中),那麼您的選擇會受到更多限制。
除了從Windows服務器,有沒有辦法解決這個問題在網站或iis? – TommyLike
@TommyLike - 沒有什麼可以「修復」。 IIS正在按照它應有的工作。你對於它應該如何工作有一個無理的期望。事實上,你想要做的就是打破它。 –
我想知道同樣的事情。最終,雖然我同意普遍的共識,但我想看看它是如何實現的,因爲我自己也處於類似的情況,那裏沒有Windows服務。
我所做的只是創建一個新的作業,它在執行時嚮應用程序本身發送HTTP請求。對我而言,我在一個簡單包含@Datetime.Now.ToString()
的頁面上指出它。
向自己發送HTTP請求的操作應該足以保證調度程序(以及父進程)處於活動狀態。
它的確如此而不是然而,停止應用程序停止/回收沒有警告。如果你想要一種方法來處理這個問題,那麼你可能需要不止一個站點運行它自己和另一個站點。這樣,如果一個網站發生故障,另一個網站可以打開它(假設它已經啓動)將其恢復。
有一個IIS配置允許工作進程始終保持運行。我通過另一個SO回答link找到了這個設置。
編輯C:\ WINDOWS \ SYSTEM32 \ INETSRV \設置\的applicationHost.config包括:
<applicationPools>
<add name="MyAppWorkerProcess" managedRuntimeVersion="v4.0" startMode="AlwaysRunning" />
</applicationPools>
斯科特·格思裏(微軟產品經理.NET)已經answerered直接關係到OP的問題一個問題( link)。
@Dominic Pettifer,
如果我設置STARTMODE = 「AlwaysRunning」 這是否意味着Web App將 '從不' 關閉,並且將始終保持運行,即使沒有 交通擊球該網站很長一段時間(除非當然是 手動關閉,或服務器關閉/崩潰等)?我問的原因是 是因爲我喜歡在 IIS ASPNET工作進程上運行後臺線程/服務,而不是使用Windows服務(我們 處理在其服務器上有很多安全限制的客戶端 ,這使得運行Windows服務difficalt或不可能)。 正常情況下,我必須設計一些定期打到網站 的東西,以保持ASPNET工作進程的活動並阻止它關閉 。
這應該意味着該應用程序和工作過程中始終 運行 - 所以我覺得確實處理您的方案以及對 你。
希望這有助於
斯科特
一個更簡單的方法是使用質量保證檢查。使用Zapix工具,我能夠安排我的網站每20分鐘進行一次質量檢查。 Zapix只是訪問了該網站並收到了http響應。通過使用Zapix,它模仿了手動訪問網站以觸發電子郵件的功能。這樣,應用程序池線程就會不停地被喚醒。
- 1. 石英調度程序如何工作?
- 2. 石英調度程序theadpool
- 3. grails石英調度程序
- 4. 石英調度程序cron
- 5. 石英調度程序 -
- 6. 石英調度程序
- 7. python企業調度程序(如石英)
- 8. 石英調度程序和線程
- 9. 帶配置調度程序的石英
- 10. 石英調度程序的設置 - Mule
- 11. 你如何保持一顆紅寶石線程活着
- 12. 石英調度程序中聽衆的真實生活用例
- 13. 如何調整石英調度程序的時間?
- 14. 石英調度
- 15. 石英作業調度程序如何在正確的順序
- 16. 石英調度程序丟失作業
- 17. 石英:調度程序已關閉
- 18. 石英調度程序作業遷移
- 19. 集羣石英調度程序配置
- 20. 石英調度程序中斷作業?
- 21. 石英調度程序vs設置cron
- 22. 關機石英調度程序
- 23. 停止單石英調度程序
- 24. 石英調度程序實例爲空
- 25. 石英調度程序 - Cron未運行
- 26. 石英與Java EE 7調度程序
- 27. getJobNames()在石英調度程序2.2.1
- 28. 石英調度程序-HELP需要
- 29. 如何保持NSTimer活着?
- 30. 保持父進程活着
您是否嘗試從application_end中刪除關閉代碼?不知道它是否有效,只是一個建議。 – TamerM
Saddly它不會工作 – TommyLike
看看這個:http://www.codeproject.com/Articles/12117/Simulate-a-Windows-Service-using-ASP-NET-to-run-sc – TamerM