Quartz.net:计划代码在自动部署后无法运行,在本地运行
Quartz.net: Scheduled code not working after deployment automatically, working locally
我希望在预定的时间线(每周一次)从我的 MVC 网站发送一封电子邮件。该代码在本地 运行 到 Visual Studio 的预定时间运行良好。但是,部署到服务器后没有被触发。
当我在部署后点击一次网站时它开始工作,因为 Applciaiton_Start 事件在我触发 Quartz 引擎的地方被触发。
有没有一种方法可以在不访问网站的情况下触发引擎。 Quartz 是否总是这样工作,您必须点击应用程序一次。
不,你不能。
Quartz.net,在您的情况下,存在于您的应用程序中。
当应用程序池被回收时,您的调度程序就会死亡。
这不是 Quartz.Net 的问题,而是 IIS 及其管理应用程序池的方式。
我想您最好的选择是使用 Windows Service 中的调度程序。
另一种选择是创建一个简单的应用程序(控制台)并通过系统任务计划程序 运行 它。使用此选项,您可能希望摆脱 Quartz.Net.
第三个选项是使用某些外部服务(如 Uptime Robot or Pingdom)让您的应用程序保持活动状态。我不会选择这个选项,但这是一种可能性。
如果您选择第三个选项,我建议您使用 JobStore,这样您就可以将您的工作保存在数据库中,并且不会错过任何机会。
我希望在预定的时间线(每周一次)从我的 MVC 网站发送一封电子邮件。该代码在本地 运行 到 Visual Studio 的预定时间运行良好。但是,部署到服务器后没有被触发。
当我在部署后点击一次网站时它开始工作,因为 Applciaiton_Start 事件在我触发 Quartz 引擎的地方被触发。
有没有一种方法可以在不访问网站的情况下触发引擎。 Quartz 是否总是这样工作,您必须点击应用程序一次。
不,你不能。
Quartz.net,在您的情况下,存在于您的应用程序中。
当应用程序池被回收时,您的调度程序就会死亡。
这不是 Quartz.Net 的问题,而是 IIS 及其管理应用程序池的方式。
我想您最好的选择是使用 Windows Service 中的调度程序。
另一种选择是创建一个简单的应用程序(控制台)并通过系统任务计划程序 运行 它。使用此选项,您可能希望摆脱 Quartz.Net.
第三个选项是使用某些外部服务(如 Uptime Robot or Pingdom)让您的应用程序保持活动状态。我不会选择这个选项,但这是一种可能性。
如果您选择第三个选项,我建议您使用 JobStore,这样您就可以将您的工作保存在数据库中,并且不会错过任何机会。