.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调试器异常捕获设置
临时绕过错误提示:- 打开「调试」→「Windows」→「异常设置」
- 取消勾选「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
相关产品推荐
相关产品推荐

