You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

项目启动报Invalid URI主机名无法解析,求通配符失效原因及客户端影响

报错根本原因

Invalid URI: The hostname could not be parsed.

该报错的核心触发逻辑是:URI规范RFC 3986明确规定主机名字段不允许出现*字符,你本地环境大概率在一周内自动更新了.NET SDK/VS调试组件,新版本的启动层新增了对launchSettings.json中applicationUrl字段的严格URI格式校验,会先把配置值当成标准URI解析,遇到*直接抛出解析失败错误。

早期版本的启动工具对该字段做了特殊兼容,会优先提取端口、再将*替换为绑定所有网卡的逻辑,不会走严格URI校验,所以之前可以正常运行。

*通配符配置失效的原因

http://*:900属于ASP.NET Core提供的非标准扩展写法,不是合法URI,仅在支持该特殊语法的服务启动层(比如Kestrel原生配置、旧版本launchSettings解析逻辑)中可以被识别为「绑定所有网卡IP的900端口」。一旦解析层升级了严格校验逻辑,就会直接在URI解析阶段报错,不会走到后续的通配符替换逻辑。

改为localhost对客户端站点的影响

分两种场景判断:

  • 如果只是本地开发调试、仅你自己本机访问服务,不会产生任何影响
  • 如果需要同一局域网其他设备、容器/虚拟机访问你的本地服务,改完就会无法访问,因为localhost只会绑定到本机回环地址127.0.0.1,外部设备无法请求到该地址
兼容绑定所有IP需求的替代写法

如果需要保留绑定所有网卡的能力,又不想触发URI校验错误,可以选择两种更稳妥的写法:

  • 直接将applicationUrl改为http://0.0.0.0:900,0.0.0.0是合法的IP地址格式,既可以通过URI校验,也会被识别为绑定所有网卡
  • 不在applicationUrl中配置通配符,直接在Program.cs中配置Kestrel监听规则:
builder.WebHost.UseUrls("http://*:900");

该参数由Kestrel直接处理,不会走launchSettings的URI校验逻辑,完全兼容通配符写法。

内容的提问来源于stack exchange,提问作者CorrieJanse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 08:24:09