友
我在我的应用程序上运行了一些石英作业。一切都运行正常,我唯一想做的就是当我在本地机器上使用该应用程序时不运行作业。这意味着作业应该只在服务器上运行,并且只在我需要它时才在本地运行。
我知道可以有一个添加布尔常量的解决方案,如果这是真的比运行,否则作业将无法运行,但是如何以及在何处进行?
如果还有其他事情可以做到吗?
public class JobScheduler
{
public static void Start()
{
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start();
IJobDetail offersRefreshJob = JobBuilder.Create<OffersRefreshJob>().Build();
ITrigger triggerForOffersRefreshJob = TriggerBuilder.Create().WithDailyTimeIntervalSchedule
(s =>
s.WithIntervalInMinutes(8)
.OnEveryDay()
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(0, 0))
)
.Build();
scheduler.ScheduleJob(offersRefreshJob, triggerForOffersRefreshJob);
}
}
这是Global.asax.cs文件的代码。我使用了一个布尔RUN_JOBS变量,只有当RUN_JOBS为true时才调用start(),但它仍然在我的本地机器上运行作业。它是一个ASP.net MVC Web应用程序。
public class MvcApplication : System.Web.HttpApplication
{
public bool RUN_JOBS = true;
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
if (RUN_JOBS)
{
JobScheduler.Start();
}
}
}
答案 0 :(得分:1)
由于您的代码在本地运行,我认为它处于Debug
模式,当您部署到服务器时,它处于Release
模式。
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
#if !DEBUG
JobScheduler.Start();
#endif
}
}