2012-01-15 48 views
1

我正在嘗試在Azure工作者角色中設置Quartz.NET來安排每日事件。大量的試驗和錯誤之後,我發現,目標方法內碼一行納入導致該事件不是在所有當某些代碼在方法中時,Quartz.NET不會觸發

建設得到觸發了Quartz.NET example,我有一個IJob類的重寫Execute方法(使用調度程序&觸發器註冊)。

當違規行(註釋)被刪除時,我可以擊中Trace.WriteLine語句上的斷點。隨着它的出現,斷點永遠不會被擊中,輸出也不會出現在其他地方。

代碼:

public class MyUpdaterJob : IJob 
{ 
    public MyUpdaterJob() 
    { 
    } 

    public void Execute(JobExecutionContext context) 
    { 
     Trace.WriteLine("-- Yay - Job called"); 

     // Removing this line will result in the breakpoint above being able to be hit 
     MyUpdateWorker updateWorker = new MyUpdateWorker(); 

     var logDate = context.FireTimeUtc.Value.AddHours(-1); 

     // [...] 
    } 
} 

我在相當無所適從它可能會被評估,將導致它不會觸發此事件。有什麼建議麼?

  • 的「MyUpdateWorker」是在另一個庫
  • 這是當前正在運行作爲Azure的輔助角色

回答

0

哇 - 這是一個奇怪的一個。

由於這個項目的'有機'增長,包含IJob實現的庫以前是一個控制檯應用程序,我在幾周前將輸出轉換爲'class library'。

平臺目標被設置爲(任何只有可用的)x86。其他一切都編譯爲「任何CPU」,可能是64位。

我記得我不得不手動編輯.csproj文件來更新它,但是一旦前控制檯項目現在庫被設置爲任何CPU,它現在就會正確觸發!

1

我想我會檢查構造爲您MyUpdateWorker()類,看看是否能一切正常,也許在診斷日誌上有一個日誌,看看你能否在那裏指出原因。通常我會發現Azure上缺少的庫的問題,因此可能缺少依賴關係。

只是幾件事情要檢查(只有今天上午所以我仍在升溫兩杯咖啡)

相關問題