ClickOnce部署时可正常访问的URL报404及URI解析错误如何解决?
根因定位方向
你遇到的Invalid URI: The hostname could not be parsed报错结合VB.NET项目的差异,核心问题大概率出在ClickOnce部署清单的生成规则上,VB.NET WinForm项目的ClickOnce发布默认配置和C#项目不一致,会导致启动URL解析异常。
排查步骤
- 第一步:检查发布配置的「安装URL」和「更新URL」是否和实际部署的URL完全一致
VB.NET项目发布时如果没有手动指定完整的HTTPS安装URL,会默认用本地开发路径生成清单,启动时就会出现URL解析失败。你可以右键VB主项目→属性→发布选项卡,确认「安装文件夹URL」是否完整填写为
https://mypc/apps/foo/,注意末尾必须加斜杠,否则生成的清单拼接路径会出错。 - 第二步:检查VB项目的应用清单配置
你提到的VB项目没有Manifest下拉选项是正常的,VB.NET项目的清单配置默认写在
app.manifest文件里,你点击「View Windows Settings」按钮就能打开这个文件,检查里面是否有自定义的部署相关配置,默认的requestedExecutionLevel节点不需要修改,确保没有多余的URI相关的自定义配置。 - 第三步:验证生成的
.application部署清单内容
发布完成后打开部署根目录下的你的项目名.application文件,搜索codebase属性,确认对应的路径是https://mypc/apps/foo/开头的完整正确路径,而不是本地路径或者缺hostname的相对路径。如果这里的codebase路径错误,启动时就会报hostname解析失败。 - 第四步:检查IIS的MIME类型配置
确认IIS站点已经添加了ClickOnce需要的三个MIME类型:.application→application/x-ms-application.manifest→application/x-ms-manifest.deploy→application/octet-stream
你其他C#项目能正常启动不代表MIME一定没问题,部分VB项目生成的清单文件扩展名大小写或者编码差异会触发MIME校验失败,返回404。
解决方案
如果排查后确认是发布时URL生成错误,重新发布时按以下步骤配置:
- 打开VB主项目的「发布」选项卡,点击「选项」按钮
- 选择「清单」类别,勾选「使用应用程序清单 for trust information」
- 回到发布主页面,完整填写「安装文件夹URL」为
https://mypc/apps/foo/,「更新URL」也填写相同的地址,末尾必须带斜杠 - 重新发布,覆盖IIS目录下的原有文件即可。
内容的提问来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

