多个 ASP.NET Core Web API 实例仅运行一次

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

我有一个 ASP.NET Core 8.0 Web API,托管在 Windows 11 服务器上默认网站下的两个 IIS 应用程序(app-1 和 app-2)上。

两个 IIS 应用程序都指向相同的物理路径 (

inetpub\wwwroot\myapp
),并且每个应用程序都有自己的专用应用程序池(
app1
app2
)。应用程序池具有唯一的标识(
app1svc
app2svc
),它们都是管理员组的成员。

在 Web API 中,我有一个

AppEvents
类实现
IHostedService
,并使用
StartAsync
StopAsync
方法来处理应用程序启动和停止事件。在
Program.cs
中,我使用
builder.Services.AddHostedService()
注册托管服务。

访问

http://localhost/app-1
时,会按预期触发
StartAsync
方法。但是,当访问
http://localhost/app-2
时,
StartAsync
方法不会执行。尽管两个 IIS 应用程序都指向同一物理目录,但该应用程序似乎只启动一次。

我尝试将

AspNetHostingModel
InProcess
更改为
OutOfProcess
,但行为保持不变。

有没有办法部署同一个Web应用程序的多个实例,每个实例单独运行但指向相同的物理目录,以便每个实例正确触发自己的

StartAsync

c# iis asp.net-core-webapi
1个回答
0
投票

是否不需要使用AddHostedService。默认模板代码应该可以正常工作

Vs 2022 project creation

   public static void Main(string[] args) 

{
var builder = WebApplication.CreateBuilder(args);// 将服务添加到容器中。

   builder.Services.AddControllers();

   var app = builder.Build();

   // Configure the HTTP request pipeline.

   app.UseAuthorization();


   app.MapControllers();

   app.Run();

}

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