【问题标题】:How can background tasks be executed from a library in an ASP.NET MVC 5 app如何从 ASP.NET MVC 5 应用程序中的库执行后台任务
【发布时间】:2019-06-21 06:55:36
【问题描述】:

在我的工作中,我们正在构建依赖于通用 Enterprise 类的 Web 应用程序。这个类有一个方法,每次 app_start 或 app_end 事件触发时都会向我们的服务器发送一个请求,这样我们就可以远程监控状态。但我们现在要求 Web 应用程序每天至少报告一次其状态,有点像遥测。我不知道如何做到这一点,到目前为止我已经找到了一些选项,但有些有局限性:

  1. 使用挂火。我不喜欢这样,因为它需要设置数据库或添加更多表并在每个项目上安装新的 Nuget 包,但这可能是我最后的选择。

  2. 使用读取数据库的 Windows 服务。这可能会少一些工作,但它无法访问 Web App web.config 代码

  3. 使用发送 AJAX 请求的 Javascript 任务。这需要有一个开放的网络浏览器并且是一个很大的风险。

我正在寻找一种服务器端方法,可以设置为在凌晨 1 点触发事件或功能。

【问题讨论】:

  • 您的应用程序是否托管在 IIS 上?如果是,哪个版本?
  • 我们使用了 IIS 服务自动启动功能,并且在应用程序启动期间,我们使用计时器定期进行一些清理。我想在这种情况下也可以使用相同的东西。
  • @Thangadurai 是的,我们使用的是 IIS 10

标签: asp.net-mvc


【解决方案1】:

我会选择 Hangifire。

它非常容易设置并且非常可靠。 您不需要设置数据库,您可能需要检查内存存储:

https://github.com/perrich/Hangfire.MemoryStorage

同时检查:

What is the equivalent to CRON jobs in ASP.NET? - C#

【讨论】:

    【解决方案2】:

    您可以使用FluentScheduler 代替 Hangfire(它更轻量级)。

    您可以使用WebJobAzure Function,而不是发送 AJAX 请求的 Javascript 任务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-17
      • 2011-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多