当前位置: 首页 > 知识库问答 >
问题:

我的ASP.NET MVC应用程序中的Quartz计划程序仅在刷新IIS服务器上的网页/应用程序后才执行作业

爱亮
2023-03-14

因此,我正在为ASP.NET MVC应用程序使用Quartz Scheduler来调度编写文件的作业。当用户从网页配置作业时,根据用户的要求,可以每小时、每天、每周等触发该作业。

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        using (var db = new M3DBContext())
        {
            //db.Configurations is a table in my db
            var file_loc = (from c in db.Configurations where c.ConfigurationKey == "file_location" select c.ConfigurationValue).Single();
            var freq = (from c in db.Configurations where c.ConfigurationKey == "frequency" select c.ConfigurationValue).Single();
            var delim = (from c in db.Configurations where c.ConfigurationKey == "delimiter" select c.ConfigurationValue).Single();
            var datetime = (from c in db.Configurations where c.ConfigurationKey == "datetime" select c.ConfigurationValue).Single();

            //System.Diagnostics.Debug.WriteLine(file_loc + " " + freq + " " + delim + " " + datetime);
            JobScheduler js = new JobScheduler(datetime,freq);
            if (!(file_loc.Equals("default") || freq.Equals("default") || delim.Equals("default") || datetime.Equals("1970-1-1")))
            {
                js.start();
            }
        }
    }

但主要的要求是,即使web应用程序处于打开/关闭/刷新/未刷新状态,也要使排定的作业以配置的时间间隔永远运行。当web应用程序关闭且IIS仍处于打开状态时,我的作业不会运行。

如何使我的应用程序的quartz调度程序在IIS中永远运行,尽管web应用程序被打开/关闭/刷新/未刷新?

共有1个答案

鱼旺
2023-03-14

application_start仅在第一个HTTP请求之后运行,而且实际上,在IIS回收之后,在新的请求触发web服务器之前,JobScheduler不会运行。你不能改变这种行为。

但是,通过在网站的IIS上启用preloadEnabled设置,可以使IIS在回收后运行默认请求。它将触发application_start

 类似资料:
  • 我正在尝试开发一个HTML5应用程序,通过PhoneGap移植到native。该应用程序是否可以在移动设备上充当服务器,在另一个移动设备上充当客户端并连接到前者?这些都在本地网络中。 我是PhoneGap的新手,我知道大多数服务器实现都在node.js或PHP等平台上,而且PhoneGap只支持超文本标记语言、CSS和JavaScript。我认为我在这里可能部分错误,因为有各种插件可以帮助简化Ph

  • 我有一个nodejs应用程序,它只不过是一个使用微软botbuilder框架构建的机器人。我创建了azure应用程序服务来托管此应用程序。我想找到一种方法,将所有应用程序日志和web服务器日志(如果可能的话)持久化到某个持久化存储中。就像本地web应用程序一样,我们可以在应用程序服务器上查找日志 在做了一些研究之后,我找到了微软关于这方面的官方文件,但看起来它有以下局限性。 我们不能使用应用程序服

  • 我有一个通过ClickOnce (VS 2012)部署到文件共享的windows应用程序。它被配置为一个在线应用程序(没有安装在客户端)。我可以通过客户机运行这个应用程序,只需指向文件共享并双击该文件。我遇到的问题是在客户端(客户端实际上是一个服务器,Windows Server 2008)上运行这个任务。但是,如果我创建一个调用ClickOnce应用程序的批处理文件,任务计划程序可以成功调用该批

  • 我想自动安装/更新我的应用程序。它是spring boot中的web应用程序。用户在自己的服务器上运行此应用程序,而这些服务器通常无法从我的构建服务器访问。 要求 安装简单 更新可以被安排并且自动完成 尽可能少的依赖 在windows服务器和linux上运行 可靠性 当前原型 我们目前的原型是基于docker的。实际上有6个docker图像(我们的应用程序是2个docker、望塔、监控代理、zuu

  • 我是android studio的新手,正在制作一个简单的天气应用程序。我编写了代码,但仍然出现以下错误: 任务': app: dexDebug'执行失败。 通用域名格式。Android石斑鱼类。常见的过程ProcessException:org。格拉德尔。过程内部的ExecException:进程'command'/usr/lib/jvm/java-7-openjdk-amd64/bin/jav

  • 我有两个应用程序服务计划在同一地区、同一资源组和同一订阅中运行。我在应用程序服务计划a中有一个web应用程序,我想将其移动到应用程序服务计划b。单击“更改应用程序服务计划”时,门户会告诉我“未找到应用程序服务计划”。 应用程序服务计划a正在标准上运行:1小。应用程序服务计划b正在标准上运行:2大。将应用程序服务计划a更改为标准:1大,在尝试移动应用程序服务时不会显示应用程序服务计划b。 这里有什么