gpt4 book ai didi

Azure 应用服务 WebApp 正常关闭/重新启动

转载 作者:行者123 更新时间:2023-12-03 02:55:14 25 4
gpt4 key购买 nike

我创建了一个 ASP.Net Core 2.1 WebApp,它有一个 HostedService 来运行后台进程,一旦取消 token 被取消,该进程最多可能需要 20 秒才能完成。当在 IIS Express 上运行时,这一切在本地工作正常 - 当 IIS Express 站点停止时调用 StopAsync() 方法,并在应用程序终止之前等待进程完成。

当我在 Azure 应用服务中运行此应用程序时,它不会正常关闭或重新启动,而是会调用 StopAsync(),但应用程序会在几秒钟内被终止,不允许应用程序正常关闭。

我尝试在 web.config 中添加以下内容:

<aspNetCore shutdownTimeLimit="90" processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout">

以及 Program.cs 中的以下内容,但这没有效果:

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseShutdownTimeout(TimeSpan.FromSeconds(90));

我需要在 Azure 应用服务中设置任何其他设置来增加关闭超时吗?

非常感谢。

最佳答案

如果我们想正常关闭 Web 应用程序,我们可以注入(inject) IApplicationLifetime并使用属性 ApplicationStopping在 Startup.cs 中

IApplicationLifetime is a new interface in ASP.NET Core under the Microsoft.AspNetCore.Hosting namespace. The interface is designed to give a developer the opportunity to gracefully startup but mostly shutdown the application.

演示代码

public void Configure(IApplicationBuilder app, IHostingEnvironment env,IApplicationLifetime applicationLifetime)
{
...
applicationLifetime.ApplicationStopping.Register(OnShutdown);
...
}
private void OnShutdown()
{
//todo
}

关于Azure 应用服务 WebApp 正常关闭/重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53324802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com