.NET Core 6 Web API合并分支后运行报SocketException地址无效异常
ASP.NET Core 6.0 跨Git分支合并后启动Socket异常说明
异常基本属性
- 触发场景:跨Git分支合并代码后,重新启动ASP.NET Core 6.0 Web API项目时触发
- 异常类型:
System.Net.Sockets.SocketException - 异常提示:The requested address is not valid in this context(对应中文:请求的地址在当前运行上下文无效)
- 触发代码行:
app.Run(); - 调用栈指向:异常在Kestrel Web服务器执行监听地址/端口绑定的Socket.Bind阶段抛出,属于服务启动阶段的网络绑定错误,和业务代码逻辑无关。
跨分支合并场景下的高频诱因
- 配置文件合并冲突残留:Git合并时
Properties/launchSettings.json、appsettings.json中Kestrel相关监听配置被误改,常见情况包括:写死了当前机器不存在的IP(比如其他同事开发环境的固定内网IP、已经失效的VPN/虚拟网卡IP)、残留Git合并冲突标记(<<<<<<<、=======、>>>>>>>片段)导致配置解析出无效地址、IPv6监听配置开启但本机未启用IPv6协议栈。 - 硬编码监听地址被覆盖:Program.cs中
builder.WebHost.UseUrls()方法传入的监听地址在合并时被替换为无效值,和配置文件中的监听规则产生冲突。 - 网络环境匹配失效:配置的监听IP对应网卡已经失效(比如之前连接公司内网时存在的内网IP在切换网络后消失、虚拟网卡被禁用),导致Kestrel无法绑定到不存在的地址上。
- 端口绑定冲突:合并后修改了服务监听端口,该端口被系统内其他残留进程(比如之前调试未正常退出的dotnet进程、其他本地服务)占用,也可能触发同类绑定异常。
快速排查路径
- 优先检查
Properties/launchSettings.json中的applicationUrl字段,确认配置值为https://localhost:xxxx、http://127.0.0.1:xxxx这类本地可访问的有效地址,无无效IP或格式错误。 - 排查
appsettings.json中Kestrel节点的Endpoints配置,确认没有Git合并残留的冲突标记,绑定的IP地址是当前设备真实存在的可用地址。 - 执行
netstat -ano | findstr "你配置的监听端口",确认端口未被其他进程占用,若存在占用进程可通过任务管理器结束对应PID的进程后重试。 - 临时将监听地址修改为
http://0.0.0.0:0(绑定所有本机可用网卡、随机分配空闲端口)测试启动,若能正常启动则可确认问题根源为监听地址配置错误,逐行核对配置修正即可。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

