Asp.net core Asp Core 3.0-Program.Main和Startup在发出请求之前不会调用

Asp.net core Asp Core 3.0-Program.Main和Startup在发出请求之前不会调用,asp.net-core,Asp.net Core,我正在用SPA构建一个ASP核心3.0 Api。我正在尝试使用AddHostedService添加BaggRound服务: public static IWebHostBuilder CreateWebHostBuilder(string[] args) { var builder = WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .ConfigureSe

我正在用SPA构建一个ASP核心3.0 Api。我正在尝试使用AddHostedService添加BaggRound服务:

  public static IWebHostBuilder CreateWebHostBuilder(string[] args)
  {

     var builder = WebHost.CreateDefaultBuilder(args)
          .UseStartup<Startup>()
          .ConfigureServices((hostingContext, services) =>
          {
             //Add scheduled update
             services.AddHostedService<ScheduledUpdateService>();
          });

     return builder;
  }
公共静态IWebHostBuilder CreateWebHostBuilder(字符串[]args)
{
var builder=WebHost.CreateDefaultBuilder(args)
.UseStartup()
.ConfigureServices((hostingContext,services)=>
{
//添加计划更新
services.AddHostedService();
});
返回生成器;
}
问题是,当我在VisualStudio中点击Run时,服务不会自动启动。这是因为尽管服务器似乎正在运行,但尚未调用Program.Main方法。如果我向服务器发送HTTP请求,则会调用Program.Main


这是部署时会发生的事情还是在visual studio中运行服务器时会发生的事情?

这就是IIS和ISS Express的工作方式:。在VS中与我们共享一个有关调试窗口的屏幕截图。如果在单击run之前放置一个断点,
services.AddHostedService()应该被点击。谢谢@KirkLarkin。我说这只在部署应用程序时有效,而不是在开发过程中有效,因为VS使用IIS Express。这取决于您是否在生产中使用IIS。IIS和ISS Express就是这样工作的:。给我们分享一个关于VS中调试窗口的屏幕截图。如果您在点击运行之前设置断点,则
服务。AddHostedService();应该被点击。谢谢@KirkLarkin。我说的对吗?这只会在我部署应用程序时起作用,而不会在开发过程中起作用,因为VS使用IIS Express?这取决于您是否在生产中使用IIS。