我有一个由 C# 编写并托管在 Windows Server Datacenter 2019 上的 WebAPI。该 API 应该始终运行并准备就绪,不应该被丢弃!
如果我停止 ApplicationPool 并再次启动它,API 不会初始化,直到我发送请求或打开 api 的 url,然后它才能继续工作。
问题是,我有一个 ScopedService,它应该在后台执行一些工作,并通过重新启动 AppPool 或 IIS,它会停止作业,直到收到请求。
我尝试了很多想法,但都行不通。
我将 AppPool 设置为 AlwaysRunning 并将空闲超时设置为 0,但也没有帮助!
我还尝试编写一个 GetMethod 来唤醒 API,并在 web.config 中添加 =>
<applicationInitialization doAppInitAfterRestart="true" skipManagedModules="true"> <add initializationPage="api/app_start" /> </applicationInitialization>
但也没有成功!
应用程序已完成处置,仅通过调用方法或 url 即可唤醒。
唯一可行的方法是使用Windows Taskplaner重新启动IIS后通过Shell脚本自动直接调用API,但这只是解决方法,我不喜欢它。
有人知道如何清洁吗?并在 IIS 重新启动或 AppPool 重新启动时自动初始化/唤醒应用程序?