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

C#拼接FTP绝对与相对URL出现URI格式无法识别异常怎么解决?

FTP UriFormatException异常原因及解决方法

异常原因

从报错栈可以定位到异常抛出在Uri serverUri = new Uri(host);这行代码,本质是host变量不符合URI标准格式要求,最常见的原因是host变量缺失FTP协议前缀,比如你只填写了FTP的IP或域名,没有添加ftp://开头的协议标识,导致Uri类无法识别地址类型。
其他可能触发该错误的原因:host为空/NULL、包含未转义的非法字符、存在多余的空格或换行符。

解决方案

  1. 首先修正host变量的格式,必须以ftp://作为前缀,示例:
    • 错误格式:192.168.3.5、ftp.mydomain.com
    • 正确格式:ftp://192.168.3.5、ftp://ftp.mydomain.com
  2. 增加格式校验逻辑,避免运行时崩溃,可直接替换原方法中的Uri初始化部分代码:
// 自动补全协议前缀,兼容ftps协议场景
if (!host.StartsWith("ftp://", StringComparison.OrdinalIgnoreCase) && !host.StartsWith("ftps://", StringComparison.OrdinalIgnoreCase))
{
    host = "ftp://" + host;
}
// 安全校验Uri格式,避免直接抛出异常
if (!Uri.TryCreate(host, UriKind.Absolute, out Uri serverUri))
{
    Debug.LogError($"FTP主机地址格式非法:{host}");
    return new string[] { "" };
}
// 直接拼接路径即可,不需要手动加斜杠避免强制跳转到根目录的问题
Uri fullUri = new Uri(serverUri, directory);
  1. 可临时添加日志打印最终生成的fullUri值,方便后续排查路径问题:
Debug.Log($"当前请求的FTP完整地址:{fullUri.AbsoluteUri}");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:45:07