电脑重启后ASP.NET Core API启动报System.AggregateException错误如何解决?
问题根因定位
首先看错误栈最底层的System.ComponentModel.Win32Exception (1722): The RPC server is unavailable.是核心触发原因:
- 你在代码中使用了
UseWindowsService()扩展方法,ASP.NET Core作为Windows服务运行时会默认注册Windows事件日志作为日志提供程序 - 系统重启后RPC服务异常未启动,导致程序无法写入Windows事件日志,日志写入抛出的异常直接阻断了Kestrel的启动流程
- 开头的Kestrel地址覆盖警告属于配置优先级提示,不影响启动:appsettings.json中配置的Kestrel端点优先级高于launchSettings.json中的applicationUrl配置,所以会提示覆盖了64616端口的配置,改用5001端口。
解决方案
步骤1:修复RPC服务异常
- 按
Win+R输入services.msc打开服务管理器 - 找到
Remote Procedure Call (RPC)服务,确认服务状态为正在运行,启动类型为自动 - 若服务未启动,手动点击启动,若启动失败可查看系统事件日志排查RPC服务启动失败的具体原因。
步骤2:(本地调试可选)禁用Windows事件日志
如果是本地开发调试不需要写入Windows事件日志,可以直接修改Program.cs代码,移除默认的事件日志提供程序,快速解决启动问题:
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureLogging(logging => { // 清空默认注册的日志提供程序 logging.ClearProviders(); // 按需添加需要的日志提供程序,比如控制台、调试日志 logging.AddConsole(); logging.AddDebug(); }) .ConfigureServices((context, services) => { services.Configure<KestrelServerOptions>( context.Configuration.GetSection("Kestrel")); }).ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }).UseWindowsService();
步骤3:(需要事件日志场景)修复日志源权限
如果必须使用Windows事件日志,可手动创建日志源并赋予权限:
- 以管理员身份运行PowerShell,执行命令:
New-EventLog -LogName Application -Source ".NET Runtime" - 执行完成后重启程序即可正常写入事件日志。
步骤4:(可选)消除Kestrel地址覆盖警告
如果不需要看到地址覆盖提示,可选以下任意一种操作:
- 删除launchSettings.json中
InternalToolsGeneralAPI配置节点下的applicationUrl字段 - 将appsettings.json中Kestrel的监听端口修改为和launchSettings.json中的64616保持一致
内容的提问来源于stack exchange,提问作者pewocis495
相关产品推荐
相关产品推荐

