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



根本原因分析
1. IIS Express 的严格主机头验证
当你使用 IIS Express 调试时:
-
IIS Express 默认启用严格的主机头验证
-
只接受预配置的主机名(如
localhost) -
拒绝非常规主机名或 IP 地址的请求
2. Kestrel 的灵活处理
当你使用 dotnet run 时:
-
直接运行 Kestrel 服务器,绕过了 IIS Express
-
Kestrel 默认的主机头验证更宽松
-
使用
http://*:8090会监听所有网络接口,接受任何主机头

浙公网安备 33010602011771号