asp.net-mvc - 即使没有对 Web 应用程序的任何请求,如何使线程在 IIS 服务器的后台工作?

标签 asp.net-mvc multithreading iis asp.net-web-api scheduled-tasks

我在 IIS 服务器上部署了一个 ASP.NET MVC Web 应用程序,

在该应用程序中,我在一个独立线程中执行如下操作:

while (true)
{
    doSomeJobs();
    Thread.Sleep(TimeSpan.FromMinutes(5));
}

Application_Start() 开始此线程
所以似乎它永远不会停止,每轮工作之间只睡 5 分钟。

起初看起来运行良好,但在第二天我检查日志它没有按我预期的那样工作,它已经停止工作很长时间了。

然后当我再次向应用程序发送请求时,它又开始工作了。

那么我错过了什么?即使没有对应用程序的任何请求,是否可以让线程在每个特定时间在后台工作?比如计划任务?

最佳答案

最后我发现这是一个普遍的问题,

这是因为如果没有人请求您的应用程序,IIS 将在特定时间停止您的进程。

让您的应用保持活力。

  • 创建一个新的应用程序池,它需要托管永远在线的应用程序。
  • 选择该应用程序池并单击高级设置。

  • enter image description here
  • 回收套装定时间隔 0

  • enter image description here
  • 流程模型套装空闲超时(分钟)最大 (43200)

  • enter image description here

    关于asp.net-mvc - 即使没有对 Web 应用程序的任何请求,如何使线程在 IIS 服务器的后台工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46065822/

    相关文章:

    css - 内部服务器错误 500.19::.less mimeMap

    c# - 使用 HTTPS 配置 WCF 服务

    c# - 在 View JQuery 中获取 ViewData

    c# - ASP.NET MVC 模型中的不可变结构

    javascript - View 未将模型传递给 Controller ​​ - ASP.Net MVC

    c# - 在 MVC 中创建包的虚拟路径?

    java - 在两个长 Action 之间获得负持续时间?

    asp.net - ASP.NET vNext 应用程序可以托管在 IIS 中吗

    Python 计时器启动和重置

    python - 导入一个未打包模块的python类,并在它自己的线程中运行