2010-05-04 89 views
1

我的計時器quartz.net工作正常,但是一旦部署到遠程服務器,它就不會觸發。我相信工作安排好,因爲如果我回發,它告訴我工作已經存在(但我通常會檢查回傳)。電子郵件代碼絕對有效,因爲'button1_click'事件成功發送電子郵件。Quartz.Net調度程序在本地工作,但不在遠程主機上

我知道我在移除服務器上擁有完全或中等信任度。我的主人說他們不會施加限制,他們知道哪些會影響它。我需要做的其他事情才能讓它運行?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using Quartz; 
using Quartz.Impl; 
using Quartz.Core; 
using Aspose.Network.Mail; 
using Aspose.Network; 
using Aspose.Network.Mime; 
using System.Text; 

namespace QuartzTestASP 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!Page.IsPostBack) 
      { 
       ISchedulerFactory schedFact = new StdSchedulerFactory(); 
       IScheduler sched = schedFact.GetScheduler(); 
       JobDetail jobDetail = new JobDetail("testJob2", null, typeof(testJob)); 
       //Trigger trigger = TriggerUtils.MakeMinutelyTrigger(1, 3); 
       Trigger trigger = TriggerUtils.MakeSecondlyTrigger(10, 5); 
       trigger.StartTimeUtc = DateTime.UtcNow; 
       trigger.Name = "TriggertheTest"; 
       sched.Start(); 
       sched.ScheduleJob(jobDetail, trigger); 
      } 
     } 
     protected void Button1_Click1(object sender, EventArgs e) 
     { 
      myutil.sendEmail(); 
     } 
    } 

    class testJob : IStatefulJob 
    { 
     public testJob() { } 

     public void Execute(JobExecutionContext context) 
     { 
      myutil.sendEmail(); 
     } 

    } 

    public static class myutil 
    { 
     public static void sendEmail() 
     { 
      // tested code lives here and works fine when called from elsewhere 
     } 
    } 
} 

回答

5

調度程序工廠對您的應用程序應該是全局的。換句話說,聲明它在Global.asax或類似的,有效地給你一個全局的實例來操作。如果運行ASP.NET,應該在應用程序啓動時啓動調度程序。

要小心。 ASP.NET回收其有效導致關閉調度程序的進程(沒有作業將運行),直到下一個請求進入Web服務器再次啓動調度程序。推薦的方法是使用Windows服務來運行Quartz.NET作業。

+0

非常感謝。你是對的,範圍是問題......! – Glinkot 2010-05-05 02:11:33

+0

@MarkoLahma感謝但據我所知Quartz.NET是爲了不使用Win服務。所以,如果我們應該使用Win服務,是否需要使用Quartz.net?應用程序方面是否有另一種解決方案如果是這樣,你可以給MVC應用程序的例子嗎? – 2015-11-08 12:46:45

+1

@Christof你*可以*在ASP.NET應用程序中託管Quartz,但它有其缺陷,如上所述。你*應該*主辦Quartz.NET最好在一個Windows服務,你也可以有管理前端使用ASP.NET MVC等不運行的工作,只是管理日程安排和工作。 – 2015-11-08 15:23:26

相關問題