Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用FluentScheduler库和Web Api安排作业?_C#_Asp.net Web Api_Fluentscheduler - Fatal编程技术网

C# 如何使用FluentScheduler库和Web Api安排作业?

C# 如何使用FluentScheduler库和Web Api安排作业?,c#,asp.net-web-api,fluentscheduler,C#,Asp.net Web Api,Fluentscheduler,我无法使FluentScheduler在.Net Framework 4.5.2 Web api中工作。几天前,我问了一个类似的问题,关于通过控制台应用程序进行调度,我可以在帮助下让它工作,但不幸的是,现在面临Web Api的问题。下面是代码 [HttpPost] [Route("Schedule")] public IHttpActionResult Schedule([FromBody] SchedulerModel schedulerModel) {

我无法使FluentScheduler在.Net Framework 4.5.2 Web api中工作。几天前,我问了一个类似的问题,关于通过控制台应用程序进行调度,我可以在帮助下让它工作,但不幸的是,现在面临Web Api的问题。下面是代码

    [HttpPost]
    [Route("Schedule")]
    public IHttpActionResult Schedule([FromBody] SchedulerModel schedulerModel)
    {
        var registry = new Registry();
        registry.Schedule<MyJob>().ToRunNow();
        JobManager.Initialize(registry);
        JobManager.StopAndBlock();
        return Json(new { success = true, message = "Scheduled!" });
    }

终于解决了这个问题。原来问题出在我的注册表类上。我不得不改变它如下

public class ScheduledJobRegistry: Registry
{
    public ScheduledJobRegistry(DateTime appointment)
    {
      //Removed the following line and replaced with next two lines
      //Schedule<SampleJob>().ToRunOnceIn(5).Seconds();
      IJob job = new SampleJob();
      JobManager.AddJob(job, s => s.ToRunOnceIn(5).Seconds());
    }

}

    [HttpPost]
    [Route("Schedule")]
    public IHttpActionResult Schedule([FromBody] SchedulerModel schedulerModel)
    {
        JobManager.Initialize(new ScheduledJobRegistry());                       
        JobManager.StopAndBlock();
        return Json(new { success = true, message = "Scheduled!" });
    }
公共类ScheduledJobRegistry:注册表
{
公共ScheduledJobRegistry(日期时间预约)
{
//拆下以下行并替换为下两行
//时间表().Torunancein(5.s();
IJob作业=新样本作业();
AddJob(job,s=>s.ToRunOnceIn(5.Seconds());
}
}
[HttpPost]
[路线(“时间表”)]
公共IHttpActionResult计划([FromBody]SchedulerModel SchedulerModel)
{
初始化(新的ScheduledJobRegistry());
JobManager.StopAndBlock();
返回Json(新的{success=true,message=“Scheduled!”});
}

另一点需要注意的是:我可以让它工作,但在IIS中托管Api会让它变得棘手,因为我们必须处理应用程序池回收、空闲时间等问题。但这看起来是一个好的开始。

最终解决了这个问题。原来问题出在我的注册表类上。我不得不改变它如下

public class ScheduledJobRegistry: Registry
{
    public ScheduledJobRegistry(DateTime appointment)
    {
      //Removed the following line and replaced with next two lines
      //Schedule<SampleJob>().ToRunOnceIn(5).Seconds();
      IJob job = new SampleJob();
      JobManager.AddJob(job, s => s.ToRunOnceIn(5).Seconds());
    }

}

    [HttpPost]
    [Route("Schedule")]
    public IHttpActionResult Schedule([FromBody] SchedulerModel schedulerModel)
    {
        JobManager.Initialize(new ScheduledJobRegistry());                       
        JobManager.StopAndBlock();
        return Json(new { success = true, message = "Scheduled!" });
    }
公共类ScheduledJobRegistry:注册表
{
公共ScheduledJobRegistry(日期时间预约)
{
//拆下以下行并替换为下两行
//时间表().Torunancein(5.s();
IJob作业=新样本作业();
AddJob(job,s=>s.ToRunOnceIn(5.Seconds());
}
}
[HttpPost]
[路线(“时间表”)]
公共IHttpActionResult计划([FromBody]SchedulerModel SchedulerModel)
{
初始化(新的ScheduledJobRegistry());
JobManager.StopAndBlock();
返回Json(新的{success=true,message=“Scheduled!”});
}

另一点需要注意的是:我可以让它工作,但在IIS中托管Api会让它变得很棘手,因为我们必须处理应用程序池回收、空闲时间等问题。但这看起来是一个好的开始。

它可以在Localhost上运行吗?它可以在Localhost上运行吗?