在C#asp.net MVC中以后台运行功能/进程

问题描述

这是我的新手,但我有一个问题:在C#ASP.NET MVC中以后台运行功能/过程的最佳方法是什么?

对于上下文,我正在为一个通过snmp进行监视的项目创建一个网站。关键是各种警报之间的超时时间不同。我想浏览所有警报,看看从上次检查到现在之间的时间是否已经过去。如果是这样,程序将对该警报进行另一次监视。它应该在后台运行,因此不会影响网站的其余部分。

有人可以帮我吗?

预先感谢^^

解决方法

在此处查看这篇出色的文章:https://www.hanselman.com/blog/HowToRunBackgroundTasksInASPNET.aspx

TLDR:您具有内置选项和第三方选项。

  • 内置的功能不那么完善,提供的功能不如hangfire
  • 内置尝试延迟应用程序池回收以完成工作。
  • Hangfire与Redis和其他持久性选项具有良好的连接性

这两者都不适合长时间运行的作业,尤其是比应用程序池重新启动时间更长的时间。

两者都需要某种恢复机制,以防任务突然中断。

您可以构建在调度程序或Windows服务或linux cron作业上运行的应用程序,甚至可以尝试在云上作为Web作业进行操作。这些与iis生命周期无关,并且没有上述缺点。