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

IIS中是否有类似cron的工作?

司马洲
2023-03-14

我正在开发一个ASP。NET网络应用程序。有一些功能我需要每10分钟触发一次。因此,目前我正在考虑一个“计划任务”或创建一个Windows服务来调用URL。

但我记得有一次,我在PHP网络托管空间中使用cron作业做了同样的事情。

那么IIS中有没有类似cron的工作?

注意:我不希望使用第三方在线计划服务。

共有3个答案

鱼安然
2023-03-14

你可能想看看Revalee开源项目。

您可以使用它来安排特定时间的Web回调。在您的情况下,您可以安排一个Web回调(未来10分钟)。当您的应用程序收到回调时,它可以安排下一个10分钟的回调。当您的ASP. NET应用程序第一次启动时,您将安排第一次Web回调。由于您的Web应用程序正在被回调,您不需要担心IIS卸载您的Web应用程序(当然,它会卸载)。

例如,使用Revalee,可以执行以下操作:

>

  • 当应用程序通过schduleTenMinuteCallback()方法启动时,注册一个未来(10分钟后)回调(见下文)。

    private DateTimeOffet? previousCallbackTime = null;
    
    private void ScheduleTenMinuteCallback()
    {
        // Schedule your callback 10 minutes from now
        DateTimeOffset callbackTime = DateTimeOffset.Now.AddMinutes(10.0);
    
        // Your web service's Uri
        Uri callbackUrl = new Uri("http://yourwebapp.com/ScheduledCallback.aspx");
    
        // Register the callback request with the Revalee service
        RevaleeRegistrar.ScheduleCallback(callbackTime, callbackUrl);
    
        previousCallbackTime = callbackTime;
    }
    

    当web计划任务激活并回调应用程序时,您每10分钟执行一次所需的操作,,并计划下一次回调。为此,您可以将以下方法调用(CallbackMonitor()添加ScheduledCallback中。aspx页面处理程序。

    private void CallbackMonitor()
    {
        if (!previousCallbackTime.HasValue 
            || previousCallbackTime.Value <= DateTimeOffset.Now.AddMinutes(-10.0))
        {
            // Perform your "10 minutes have elapsed" action
    
            // ...do your work here...
    
            // Schedule subsequent 10 minute callback
            ScheduleTenMinuteCallback();
        }
    }
    

    你不使用“第三方在线调度服务”的观点已经被理解了。重载服务不是外部第三方在线调度服务,而是一种服务(更具体地说,是视窗服务),你可以在自己的网络上安装完全控制它。它驻留在你自己选择的服务器上运行,很可能在你的防火墙后面,在那里它可以接收来自你在IIS上的网络应用程序的回调注册请求。(当然,如果需要,它可以安装在IIS网络服务器上。)

    我希望这能有所帮助。

    免责声明:我是参与Rvalee项目的开发人员之一。然而,要明确的是,Rvalee是免费的开源软件。源代码可以在GitHub上获得。

  • 袁玮
    2023-03-14

    我同意@Amadan-苹果和橙子。

    然而,我倾向于为此编写一个定制的Windows服务,而不是使用Windows任务调度器。另一个问题是专业人士

    虽然Windows服务很简单(足够)来开发,但您可能会考虑开源的顶层框架,以减轻一些通常伴随开发和部署的怪癖。

    公平地说,请记住,cron当然不是PHP的一部分,它只是一个在*nix PHP托管环境中可用的工具:ASP。网络真的没什么不同;问题是ASP中有什么类似于cron的工具。NET环境,以满足您的需求和您的喜好。

    怀德馨
    2023-03-14

    苹果和橙子cron是一种Unix服务。IIS是一个web服务器。正如Apache或nginx中不包含cron,IIS也没有包含调度器的意义。但是,您可以使用schtasks。exe以类似的方式,您可以在Unix上使用cron

    你可能会在这个问题中找到更多的想法。

     类似资料:
    • 问题内容: 我喜欢整个WMI概念,并且可以在Linux(在某些脚本中)中真正使用它。Linux系统有类似的东西吗? 问题答案: 并不是的。您是否正在使用WMI获取系统参数,查询过程,更改配置或监视系统事件,等等? 内核通过和文件系统公开了许多信息和可调旋钮。没有查询语言,只有目录和文件的组织层次结构。其中一些文件是只读,读写或只写的。其中一些人有能力。 有些服务可能具有动态自定义客户查询和更新配置

    • 问题内容: Java中是否有内置方法来查找任何数据类型的大小?有什么方法可以找到尺寸? 问题答案: 否。标准Java SE类库中没有这种方法。 设计者的观点是Java不需要它,因为该语言使应用程序1无需知道需要为原始值,对象或具有给定数量的元素的数组保留多少空间。 您可能会认为sizeof运算符对需要了解其数据结构占用多少空间的人很有用。但是,您还可以使用Java内存分析器简单,可靠地获得此信息以

    • 问题内容: 我需要用同一行的一组列(从左到右)中的第一个非空条目填充一个单元格-类似于SQL中的coalesce()。 在以下示例表中 我想在A行的每个单元格中放置一个单元格函数,这样我将得到: 我知道我可以使用一系列IF函数来做到这一点,但是在我的实际工作表中,我有30列可供选择,因此,如果有一种更简单的方法,我将很高兴。 问题答案: 这是一个数组公式。输入公式后,按+ +使Excel将其评估为

    • 问题内容: 我从来没有见过这样的声明,它是否存在于Java世界中? 问题答案: Java的版本是-它创建指定类型的新对象。 在Java中,内存是为您管理的,因此您不能显式或对象。

    • 我想像这样在中使用一个不可序列化的对象 它非常低效,因为我创建了许多实例。实际上,它只能在每个工作器中创建一次。 在Spark中,我可以使用mapPartition来执行此操作。但在flink stream api中,我不知道。

    • 问题内容: Java中是否有类似.NET的东西? 问题答案: 下议院郎有它。或者你可以扔一个。