需要在重新启动 ApplicartionPool 或 IIS 后启动/唤醒 API 的帮助

问题描述 投票:0回答:1

我有一个由 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 重新启动时自动初始化/唤醒应用程序?

c# asp.net api asp.net-web-api
1个回答
0
投票

IIS 应用程序本身也必须配置为预加载。

© www.soinside.com 2019 - 2024. All rights reserved.