让.net core程序在IIS中一直运行

我的一个.net core WebHost应用,使用到BackgroundService,部署在了IIS中,需要一启动就开始运行,且保持运行。

但是发现IIS中的应用,只有在接收到第一个请求后,才会开始启动。
而且发现如果一段时间没有请求,IIS会自动杀掉该应用。

参考这篇文章,得到了初步的解决方案。

大致概括如下:

  1. 使能应用初始化模块( Server Roles -> Web Server -> Application Developer -> Application Initialization)。另:我发现仅windows server版本有这个功能。
  2. 应用程序池,高级设置,自动启动设为True,进程模型中的闲置超时设为0,我测试后发现这条不需要:(文章还要求把.net framework版本设置为4.0,否则这些设置没有效果)。
  3. 网站的高级设置中,同样把自动启动设置为True。

如此做,应用程序在IIS启动时,就会自动被启动,且不会因为闲置而被杀掉。

不过目前碰到问题是,启动时,会报IISHttpServer.HandleRequest中的异常,可能与第一步中的初始化请求模块有关,该模块模拟了HTTP请求,但是未被正常处理。

不过目前问题暂时解决了。

posted @ 2020-03-31 21:20  mosakashaka  阅读(1495)  评论(0编辑  收藏  举报