C# 当我使用c在iis上托管应用程序时,Quartz计划程序不工作#

C# 当我使用c在iis上托管应用程序时,Quartz计划程序不工作#,c#,iis,quartz-scheduler,C#,Iis,Quartz Scheduler,我创建了一个web表单应用程序。我使用的是Quartz.net 在这里,我有一个类RequestToken,如下所示 public partial class RequestToken : System.Web.UI.Page { public void Page_Load(object sender, EventArgs e) { Method1(); Method2(); } public void Method1()

我创建了一个web表单应用程序。我使用的是Quartz.net

在这里,我有一个类
RequestToken
,如下所示

public partial class RequestToken : System.Web.UI.Page
{
    public void Page_Load(object sender, EventArgs e)
    {
          Method1();
          Method2();
    }

    public void Method1()
    {
    }

    public void Method2()
    {
    }
}

public class job : IJob
{
    public void Execute(IJobExecutionContext context)
    {
        RequestToken rs = new RequestToken();
        rs.Page_Load(null, EventArgs.Empty);
    }
}
然后我有另一个类Jobscheduler.cs

public class JobScheduler
{
    public static void Start()
    {
        IScheduler scheduler = (IScheduler)StdSchedulerFactory.GetDefaultScheduler();
        scheduler.Start();

        IJobDetail Jobs = JobBuilder.Create<job>().Build();
        ITrigger trigger = TriggerBuilder.Create()
                                         .WithDailyTimeIntervalSchedule
                                             (s => s.WithIntervalInHours(24)
                                                    .OnEveryDay()
                                                    .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(10, 00))
                                             )
                                         .Build();

        scheduler.ScheduleJob(Jobs, trigger);
    }
}
调度程序在给定的时间内完美运行

上述代码中的问题

  • 它在本地运行两次,第一次在pageload()上运行,第二次在调度程序运行后运行

  • 当托管在IIS中时,它需要将classname附加到url,这意味着站点应该是这样的“www.site.com/RequestToken.aspx”是因为我的应用程序中只有一个页面是RequestToken.aspx吗

  • 是否需要从上述代码中删除pageLoad()

    我是否应该添加default.aspx并将该页面中的上述代码移动到IIS中的主机


    任何人都可以提供解决方案吗

    您正在做的事情与Hangfire非常相似,因此同样的缺点也适用,
    void Application_Start(object sender, EventArgs e)
    {
          JobScheduler.start();
    }