使用ClickOnce搭配个人FTP服务器实现公司应用自动更新遇报错求助
问题核心原因
你遇到的报错本质是协议端口混用错误:FTP服务默认占用21端口,而HTTP/HTTPS协议需要使用独立的未被占用的端口,两者不能共用同一端口。
具体修复步骤
- 发布路径配置不需要修改:你当前设置的
ftp://[IP.ADDRESS]:21/Folder/Subfolder是用于本地打包后上传应用文件到服务器的路径,走FTP协议用21端口属于正常配置。 - 重新配置安装/更新URL:
- 先在IIS中单独创建一个HTTP/HTTPS站点,物理路径指向FTP服务对应的
Folder/Subfolder目录,给该站点开放匿名读取权限。 - 给这个HTTP站点绑定独立端口,HTTP默认用80端口,自定义可选择8080等未被占用的端口;HTTPS默认用443端口,自定义可选择8443等端口,确保和FTP的21端口完全隔离。
- 将ClickOnce的安装文件夹URL修改为对应站点的地址,比如HTTP场景用
http://[IP.ADDRESS]:8080/Folder/Subfolder,HTTPS场景用https://[IP.ADDRESS]:443/Folder/Subfolder。
- 先在IIS中单独创建一个HTTP/HTTPS站点,物理路径指向FTP服务对应的
- 补全IIS站点MIME类型配置:
在刚才创建的HTTP站点的MIME类型设置中添加3项规则,否则ClickOnce相关文件会被拦截无法下载:.application→application/x-ms-application.manifest→application/x-ms-manifest.deploy→application/octet-stream
- 修复SSL配置问题:
之前你用HTTPS访问21端口时,实际上是在和FTP服务的FTPS握手通道通信,和ClickOnce需要的HTTPS TLS握手逻辑完全不同,所以会出现握手失败报错。端口修正后,如果用HTTPS站点:- 给IIS的HTTPS站点绑定合规SSL证书
- 如果是内网用的自签名证书,需要将证书导入到所有客户端设备的「受信任的根证书颁发机构」存储区,避免信任验证失败。
验证方法
配置完成后先在浏览器直接访问更新路径下的应用文件:http://[你的IP]:[你绑定的端口]/Folder/Subfolder/application.application(注意你报错中的文件名拼写为applciation.application,请先确认实际文件名拼写正确),如果浏览器可以正常弹出下载提示,说明站点配置无误,再测试ClickOnce自动更新功能即可。
内容的提问来源于stack exchange,提问作者TheAdmiral4273
相关产品推荐
相关产品推荐

