首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当站点上没有活动时,C# - Quartz调度程序停止运行。

当站点上没有活动时,C# - Quartz调度程序停止运行。
EN

Stack Overflow用户
提问于 2016-07-14 09:11:50
回答 2查看 4K关注 0票数 5

我用石英调度器创建了asp.net站点。作业在后台运行,网站上没有其他活动。

石英调度器每30分钟一次。

IIS启动后,Scheduler将正确运行。

但是过了一段时间,Scheduler停止了跑步(大约1小时)。

如果在站点上有一个或多个活动作为用户登录或查看仪表板,那么Scheduler将正确运行。

但是当现场没有任何活动时,它就停止运行。

当现场没有活动的时候,如何保持我的调度器的活力?

我知道我的问题可以和其他问题重复。但我仍然问,因为我不能评论在其他问题的答案。

编辑:

代码语言:javascript
复制
Day Running at: 7/14/2016 4:00:00 AM
--
Day Running at: 7/14/2016 4:30:00 AM
--
Day Running at: 7/14/2016 5:00:00 AM
--
Stopped running
--
Day Running at: 7/14/2016 2:00:00 PM
--
Day Running at: 7/14/2016 2:30:00 PM
--
Day Running at: 7/14/2016 3:00:00 PM
--
Stopped running
--
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-14 09:23:51

默认情况下,如果应用程序在一段时间内没有收到请求,IIS将卸载应用程序。

您可以将IIS配置为永不卸载您的application.There,这是IIS卸载应用程序的许多原因--确保禁用所有这些应用程序。它在应用程序池设置中,最好转到“高级设置”并仔细遍历所有设置。

顺便提一句,如果您有一个后台任务,您需要可靠地按计划运行,那么除了web应用程序之外,为什么不将它部署到Windows服务中呢?Web应用程序最擅长为传入的请求提供服务,而不是运行计划作业。

更新

在应用程序池的高级设置中查看这些内容:

  • 过程模型/空闲超时和延迟超时操作
  • 回收/定期时间间隔,请求限制,私有内存限制,虚拟内存限制
票数 8
EN

Stack Overflow用户

发布于 2016-07-14 09:33:23

通常情况下,您不应该将ASP.NET用于重复任务并不是为此而构建的,因此建议使用Windows。

但是,您可以使用WebBackgrounder。Scott似乎是背书 ;)他还演示了如何同时使用Quartz.NET。

或者,您可以启动一个线程,该线程每分钟都会从应用程序生成请求,以保持该线程的正常运行:

代码语言:javascript
复制
    protected void Application_Start()
    {
        // ...

        ThreadPool.QueueUserWorkItem(o => PingMyself());
    }

    private static void PingMyself()
    {
        var webClient = new WebClient();
        while (true)
        {
            Thread.Sleep(TimeSpan.FromMinutes(1));
            webClient.DownloadString("http://my.public.address.com");
        }
    }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38370106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档