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

.NET 9升级后,Visual Studio 2022中按Control-C退出触发致命错误

.NET 9控制台Web应用Control-C终止触发致命错误的解决思路

问题概述

将项目从.NET 8升级至.NET 9后,所有基于WebBuilder的控制台Web应用出现以下异常:

  • 通过Control-C或控制台窗口关闭按钮终止应用时,立即触发致命错误
  • 应用正常运行无问题,通过IHostApplicationLifetime.StopApplication主动关闭、直接在PowerShell运行(不附加调试器)、回退到.NET 8时均无此错误

最简复现代码

internal class Startup
{
    public static async Task Main(string[] args)
    {
        await WebApplication.CreateBuilder().Build().RunAsync();
    }
}

项目文件配置:

<Project Sdk="Microsoft.NET.Sdk.Web">

解决思路

  • 更新.NET 9至最新版本
    .NET 9若为预览版,调试器相关的终止错误大概率是已知bug。执行dotnet --list-sdks查看当前版本,前往微软官网下载安装最新的.NET 9 SDK(优先选择正式发布版)。

  • 调整Visual Studio调试器异常捕获设置
    临时绕过错误提示:

    1. 打开「调试」→「Windows」→「异常设置」
    2. 取消勾选「Common Language Runtime Exceptions」下的「致命错误」相关选项,或暂时禁用所有CLR异常捕获(仅作为临时 workaround)
  • 手动接管控制台终止信号
    通过注册Console.CancelKeyPress事件,强制用优雅方式关闭应用,避免调试器捕获未处理错误:

    internal class Startup
    {
        public static async Task Main(string[] args)
        {
            var app = WebApplication.CreateBuilder().Build();
            
            Console.CancelKeyPress += (sender, e) =>
            {
                e.Cancel = true; // 取消系统默认终止逻辑
                app.Lifetime.StopApplication(); // 调用优雅关闭方法
            };
            
            await app.RunAsync();
        }
    }
    
  • 向官方反馈问题
    若以上方法无效,说明这是.NET 9与Visual Studio调试器的兼容性bug。前往微软开发者社区提交问题,附上复现步骤、代码及错误截图,协助官方定位修复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 11:37:16