我有一个MVC
应用程序,它使用Quartz.NET
定期发送电子邮件。尽管已发布的应用程序在IIS
上正常工作,但在回收应用程序池或重新启动IIS
上的应用程序后,它仍无法正常工作。在网上搜索我发现了几个帖子,建议在配置文件或IIS
上做一些修改,但是没有一个能够正常工作。那么,有什么方法可以解决这个问题吗?我需要一个可以在应用程序端应用的解决方案(如果简单,只需要更改配置等,就可以在IIS端应用)。我认为这是在IIS
上保留申请时的常见问题,不是吗?
注:我使用Windows Server 2008和IIS 7.5。在回收或重新启动后无法在IIS上保持活动状态
回答
你不会在你的问题中提到你的应用程序将在哪里运行,所以我想它将在内部托管。
关注你的评论我收集你没有任何问题在你的服务器上安装和运行Windows服务。
我的建议 - 以及我以前实现的东西 - 是将ASP.NET MVC应用程序仅用作创建,删除或挂起作业/触发器的UI,这些作业/触发器将保存在数据库中,无论您的应用程序发生什么,您都不会失去工作/触发器,只要应用程序重新联机,它们就会立即执行。
数据库将与另一层Windows服务共享,该服务将负责运行您的预定作业。
第一步是设置和使用AdoJobStore来存储Quartz.Net数据。正如您在帖子中看到的那样,您可以使用几个提供商。
第二步是创建和配置您的Windows服务。我会用TopShelf来承载它。实施非常简单直接;加上你可以使用Quartz.Net集成提供的here。
如果您仔细阅读文档,您将无法发现整合解决方案的任何问题。
Quartz.Net取决于你必须添加的一些配置在你的app.config/web.config。在这个answer中有关于配置和AdoJobStore的详细解释。
有几件事要记住实施这种类型的解决方案。
你的Web应用程序会为属性threadPool
在你的配置设置为ZeroSizeThreadPool
:
<add key="quartz.threadPool.type" value="Quartz.Simpl.ZeroSizeThreadPool, Quartz" />
或代码:
properties["quartz.threadPool.type"] = "Quartz.Simpl.ZeroSizeThreadPool, Quartz";
,它永远不会启动调度程序(你的windows服务去使用它)。
非常感谢您的详细解释。我只是有时间继续进行,并且希望确定如果在同一个解决方案中使用除MVC应用程序之外的控制台应用程序并从Windows计划任务调用此应用程序更好。因为我尝试了很多东西,但都没有工作,我真的不想用除了现在的方法以外的其他方法。任何有关使用控制台应用程序或保持Quartz或Hangfire应用程序(发布到IIS)活动的想法? –
- 1. Jetty保证在启动()返回后保持启动状态吗?
- 2. 在其onCreate方法中启动新活动后的上一个活动状态?
- 3. 如何在刷新页面后保持会话活动状态
- 4. 在PyQt4中保持活动状态
- 5. 重新加载后在状态中保留用户活动
- 6. X错误后重新启动IIS /回收App池?
- 7. 在活动重新启动时没有保留网格视图状态
- 8. 如何在重新启用后保持ToggleButton状态
- 9. COSU:无法找到活动后引脚,然后重新启动
- 10. 回发后保持所选菜单处于活动状态
- 11. 配置保持活动状态始终保持连接状态
- 12. 在Firebase中保存数据后活动重新启动
- 13. 保持悬停状态在整个div中保持活动
- 14. 如何让css按钮在点击后保持活动状态?
- 15. Twilio iOS客户端 - 在后台保持活动状态
- 16. 在jar执行后,java进程保持活动状态吗?
- 17. 在当前状态下启动活动
- 18. android-我需要保持在重新启动后坚持警报?
- 19. Android - 在开始新活动时保存活动状态
- 20. 窗体移动到后面并保持活动状态
- 21. 如何在重新启动后立即启动锁屏活动?
- 22. 如何在回收/重新启动后使用TimeTrigger自动启动Azure WebJob WebApp
- 23. 在Windows 10重新启动后,STS无法启动
- 24. 如何激活保持活动状态,http://www.webpagetest.org表示保持活动状态未激活
- 25. LDAP套接字保持活动状态
- 26. 如何保持Android活动的状态
- 27. 使连接保持活动状态
- 28. EOF错误并保持活动状态
- 29. 无法重新启动由PendingIntent启动的活动
- 30. 在重新启动后在PowerShell中保持会话
Web应用程序在哪里发布? ISP还是内部?我已经[回答](http://stackoverflow.com/a/31960404)几个月前关于应用程序池和quartz.net的问题。 – LeftyX
@LeftyX Mnay感谢您的回复。实际上,你展示了可能性,然后在IIS服务器上强制应用程序始终处于活动状态。我在IIS服务器上发布了应用程序,根据您的文章,我认为使用Windows Service的最佳选择。那么,请你澄清我应该做什么改变?我有一个MVC5 Web应用程序,不知道如何每周触发应用程序或Quartz工作?我知道Windows计划程序设置,我只需要在应用程序,石英和窗口端执行其他设置。非常感谢。 –
这对我来说似乎是一个配置问题。可能是应用程序在重新启动IIS时未完全死亡,或者可能是启动配置不是100%正确的。只是猜测。 –