我有几个重要的石英事件必须在夜晚的特定时间发生。最近我注意到并非所有事件都在运行。我有一种感觉,一夜之间我们的服务器负载非常轻(即零用户)并且Web服务器类型会进入休眠状态,因此Quartz也是如此。这看起来似乎有道理吗?我在Web服务器中使用Quartz.net,而不是单独的服务。
答案 0 :(得分:1)
是的,这似乎是合理的。一般来说,让IIS运行计划任务被认为是一种不好的做法,这是Windows服务最好的工作,或内置的Windows计划任务(对于Windows Server 2008已经有了很大的改进)。
您的工作进程可能已关闭,因为没有负载。默认情况下,IIS在20分钟后关闭工作进程而不进行请求(您可以在应用程序池设置中更改此操作)。此外,工作进程可能会在一定时间或请求后重新启动,或者如果它们占用过多内存。
针对您的特定问题的快速修复可能是使用Windows任务计划程序定期请求站点使其保持活动状态 - 或让它请求在预定义时间触发您的任务的URL。
答案 1 :(得分:0)
默认情况下,ASP.Net会在一段时间不活动后关闭AppDomain。
建议的操作方法是在Windows服务中实现定时事件,或者从Window的计划任务启动可执行文件。
还可以更改IIS配置,以便它不会关闭AppDomain。如何实现这一点的方式因IIS版本而异,但可以通过搜索轻松找到说明。