让.net core程序在IIS中一直运行
我的一个.net core WebHost应用,使用到BackgroundService,部署在了IIS中,需要一启动就开始运行,且保持运行。
但是发现IIS中的应用,只有在接收到第一个请求后,才会开始启动。
而且发现如果一段时间没有请求,IIS会自动杀掉该应用。
参考这篇文章,得到了初步的解决方案。
大致概括如下:
- 使能应用初始化模块(
Server Roles -> Web Server -> Application Developer -> Application Initialization
)。另:我发现仅windows server版本有这个功能。 - 应用程序池,高级设置,自动启动设为True,进程模型中的闲置超时设为0,我测试后发现这条不需要:(文章还要求把.net framework版本设置为4.0,否则这些设置没有效果)。
- 网站的高级设置中,同样把自动启动设置为True。
如此做,应用程序在IIS启动时,就会自动被启动,且不会因为闲置而被杀掉。
不过目前碰到问题是,启动时,会报IISHttpServer.HandleRequest
中的异常,可能与第一步中的初始化请求模块有关,该模块模拟了HTTP请求,但是未被正常处理。
不过目前问题暂时解决了。