1

我在windows服務中實現了quartz.net來運行任務。而且一切工作正常在本地工作站上。但是一旦它被部署到遠程win服務器主機上,它就會在初始化後掛起。Quartz.net沒有在遠程服務器上發射

ISchedulerFactory schedFact = new StdSchedulerFactory(); 

// get a scheduler 
var _scheduler = schedFact.GetScheduler(); 

// Configuration of triggers and jobs 
var trigger = (ICronTrigger)TriggerBuilder.Create() 
              .WithIdentity("trigger1", "group1") 
              .WithCronSchedule(job.Value) 
              .Build(); 

var jobDetail = JobBuilder.Create(Type.GetType(job.Key)).StoreDurably(true) 
           .WithIdentity("job1", "group1").Build(); 

var ft = _scheduler.ScheduleJob(jobDetail, trigger); 

一切似乎都是標準的。我有調度程序的私有靜態指針,記錄過程在作業初始化並添加到調度程序後立即停止。之後沒有其他發生。 我會很感激任何意見。

謝謝。

PS:

發現,根據quartz.net在事件查看器MB一些奇怪的事件:

Restart Manager - Starting session 2 - ‎2012‎-‎07‎-‎09T15:14:15.729569700Z. 
Restart Manager - Ending session 2 started ‎2012‎-‎07‎-‎09T15:14:15.729569700Z. 
+0

那麼你是說服務正常啓動,然後只是不執行任務?或者服務掛起,並且不會給你「成功啓動」的消息(假設你從cmd運行) – 2012-07-09 14:40:02

+0

我甚至重構了代碼來運行它作爲控制檯應用程序而不是服務。調度程序的行爲非常奇怪,我甚至無法正確關閉應用程序,只能通過進程kill。似乎調度程序啓動了一些操作並掛起。 – 2012-07-09 15:02:27

+0

你應該做的第一件事是檢查Windows日誌,看看服務是否正確初始化。轉到開始菜單,找到「事件查看器」,進入Windows日誌,應用程序,按日期/時間排序,找到與您的服務匹配的來源,並讓我知道日誌說什麼 – 2012-07-09 15:23:13

回答

2

根據你的問題,你的意見給了更多的信息,我會想有一些事情您的服務的onStart方法錯誤。

這裏有一些事情可以做,以幫助找出並解決問題:

  1. 將在一個try/catch塊的OnStart方法的代碼,並嘗試安裝並啓動服務。然後檢查Windows日誌,看它是否安裝正確,啓動是否正確等。
  2. 重新啓動管理器正在運行的事實使我相信您的服務可能依賴於已在使用的進程。在安裝之前確保您的服務的任何依賴關閉。
  3. 此問題也可能是由於onStart方法中存在數據密集型或長時間運行操作造成的。確保你保持onStart這種代碼。
0

我有類似的問題,這是由於在程序集名稱中有點/句號,例如, Project.Update.Service。當我將其更改爲ProjectUpdateService時,它工作正常。

奇怪的是,它總是在開發機器上工作。永遠不要在遠程機器上。

更新:它可能是導致此問題的服務的長度。通過刪除點,我縮短了服務名稱。它看起來最大長度是25個字符。