我有一个用C#编写的WebAPI,托管在Windows Server Datacenter 2019上.API应该始终处于运行和准备状态,并且不应该被释放!
如果我停止ApplicationPool并重新启动它,API不会初始化,直到我发送请求或打开API的URL,然后它才会继续工作.
问题是,我有一个ScopedService,它应该在后台执行一些工作,通过重新启动AppPool或IIS,它会停止作业(job),直到请求到来.
我try 了很多 idea ,但都不起作用.
我将AppPool设置为Always Running,并将空闲超时设置为0,但也没有帮助!
我还try 编写一个GetMethod来唤醒API,并在web.config中添加了=>
<applicationInitialization doAppInitAfterRestart="true" skipManagedModules="true">
<add initializationPage="api/app_start" />
</applicationInitialization>`
但也没有奏效!
应用程序已完全释放,并且它仅通过调用方法或URL来唤醒.
唯一有效的方法是在使用Windows TaskPlaner重启IIS后通过shell 脚本自动直接调用API,但这只是一个变通方法,我不喜欢它.
有没有人知道怎么干净利落?并在IIS重新启动或AppPool重新启动时自动初始化/唤醒应用程序?