Consul访问宿主机api项目失败

最近在学习consul,在docker上启动consul实例后。本地有一个.net core api项目,项目主要是实现启动就向consul注册及有一个心跳检查,启动调试后可以看到已经成功向consul注册了服务,就是心跳检查一直不成功,最后不使用vs的调试,在项目文件中用命令启动,最后成功。

image

image

 

GIF 2025-10-30 23-22-20

根本原因分析

1. IIS Express 的严格主机头验证

当你使用 IIS Express 调试时:

  • IIS Express 默认启用严格的主机头验证

  • 只接受预配置的主机名(如 localhost

  • 拒绝非常规主机名或 IP 地址的请求

2. Kestrel 的灵活处理

当你使用 dotnet run 时:

  • 直接运行 Kestrel 服务器,绕过了 IIS Express

  • Kestrel 默认的主机头验证更宽松

  • 使用 http://*:8090 会监听所有网络接口,接受任何主机头

 

posted @ 2025-10-30 23:24  binzi-6  阅读(4)  评论(0)    收藏  举报