You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Asp.Net Core API构建Host崩溃的IIS环境自动恢复方案咨询

问题:IIS托管的ASP.NET Core API启动失败后进程僵死无法自动重启

环境与代码

我有一个基于.NET 6的ASP.NET Core API,其Program.cs代码如下:

public class Program
{
    public static void Main(string[] args)
    {
        var host = BuildWebHost(args).Build();
        host.Run();
    }

    public static IHostBuilder BuildWebHost(string[] args) =>
        Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseKestrel(options =>
            {
                options.Limits.MinRequestBodyDataRate = new MinDataRate(100, TimeSpan.FromSeconds(30));
            })
            .UseIISIntegration()
            .UseStartup<Startup>();
        });
}

在Startup类中,启动代码需要访问数据库以获取各类启动配置。该API通过AspNetCoreModuleV2托管在IIS中。

问题现象

当数据库不可用时:

  • 直接运行API可执行文件,进程会正常停止
  • 但在IIS中,API启动崩溃后,IIS会返回500错误(符合预期),但API进程并未终止,而是保持存活状态,成为"僵死"进程
  • 此时刷新网站会立即返回500错误,必须手动重启API才能恢复服务

需求

我需要可行的解决方案,比如通过web.config配置或在.NET代码中发送信号告知"IIS进程已僵死,请重启",避免手动操作。理想状态是:IIS在返回500错误2-5分钟后,自动尝试重新启动可执行文件,直到数据库恢复正常。

优先寻找由IIS原生处理的方案,无需搭建额外架构。

补充:批量排查脚本

受启发编写了一个PowerShell脚本,可查找所有运行中的目标可执行文件进程,通过进程用户名获取站点域名,逐个检测站点状态(当前用于手动批量排查,后续可扩展为根据状态重启应用池):

$apiProcesses = Get-Process NAME_OF_YOUR_EXECUTABLE -IncludeUserName

foreach($process in $apiProcesses)
{
    $siteDomain = $process.userName -replace "IIS APPPOOL\\", ""
    Write-Host ("Checking $siteDomain")
     
    $testUri = "https://$siteDomain/api/license"

    $Request = [system.Net.WebRequest]::Create($testUri)

    try {
        # Get the response
        $Response = $Request.GetResponse()
    } catch [System.Net.WebException] {
        # If it fails, get Response from the Exception
        $Response = $_.Exception.InnerException.Response
    }

    if(200 -ne ($Response.StatusCode -as [int])){
        Write-Host "          Site $testUri seems down" 
    }
}

内容的提问来源于stack exchange,提问作者ankhansen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 07:33:29