private DateTimeOffet? previousCallbackTime = null;
private void ScheduleTenMinuteCallback()
{
// Schedule your callback 10 minutes from now
DateTimeOffset callbackTime = DateTimeOffset.Now.AddMinutes(10.0);
// Your web service's Uri
Uri callbackUrl = new Uri("http://yourwebapp.com/ScheduledCallback.aspx");
// Register the callback request with the Revalee service
RevaleeRegistrar.ScheduleCallback(callbackTime, callbackUrl);
previousCallbackTime = callbackTime;
}
3 回答
苹果和橘子 .
cron
是一个Unix服务 . IIS是一个Web服务器 . 正如cron
不包含在Apache或nginx中一样,没有任何意义上IIS包含调度程序 . 但是,您可以使用schtasks.exe以类似的方式在Unix上使用cron
.你可能会在this question找到更多的想法 .
我同意@Amadan - 苹果和橘子 .
但是,我倾向于为此目的编写自定义Windows服务,而不是使用Windows任务计划程序 . Another SO question说明每种选择的利弊 .
虽然Windows服务很容易开发(足够),但您可以考虑使用开源的Topshelf框架来缓解通常随附的一些开发和部署问题 .
并且公平地说,记住
cron
当然不是PHP的一部分,只是一个可以在* nix PHP托管环境中使用的工具:ASP.NET真的没有什么不同;问题是,在您的ASP.NET环境中,您可以使用哪种cron
类似的工具满足您的要求并且您更喜欢 .您可能想看一下Revalee开源项目 .
您可以使用它在特定时间安排Web回调 . 在您的情况下,您可以安排Web回调(将来10分钟) . 当您的应用程序收到回调时,它可以安排下一个10分钟的回调 . 当您的ASP.NET应用程序第一次启动时,您将安排第一次Web回调 . 由于您正在回调Web应用程序,因此您无需担心IIS卸载Web应用程序(当然,它会) .
例如,使用Revalee,您可以执行以下操作:
ScheduleTenMinuteCallback()
方法启动时,注册未来(从现在起10分钟)回调(见下文) .CallbackMonitor()
)添加到ScheduledCallback.aspx
页面处理程序来完成此操作 .关于不使用'3rd party online scheduler services'的观点被理解 . Revalee服务不是外部第三方在线调度程序服务,而是您在自己的网络上完全安装和控制的服务(更具体地说是Windows服务) . 它驻留在您自己选择的服务器上并运行,很可能位于防火墙后面,它可以从IIS上的Web应用程序接收回调注册请求 . (当然,如果需要,它可以安装在IIS Web服务器上 . )
我希望这有帮助 .
免责声明:我是参与Revalee项目的开发人员之一 . 但需要明确的是,Revalee是免费的开源软件 . 源代码可在GitHub上获得 .