URI无效:指定的端口无效/无法解析主机名

时间:2015-03-30 12:48:14

标签: c# asp.net upload ftp webclient

我正在尝试将文件上传到远程服务器的FTP。

当我尝试使用时: ftp://user:pass@ftp.host.com/name.txt

我收到此错误: 无效的URI:指定的端口无效。

当我尝试使用时: ftp://[user:pass@ftp.host.com]/name.txt

如几篇文章中所建议的那样,

我收到此错误: 无效的URI:无法解析主机名。

这是我的上传代码:

using (System.Net.WebClient webClient = new System.Net.WebClient())
{
    webClient.UploadFile(new Uri(ftpAddress), @"C:\inetpub\wwwroot\name.txt");
}

1 个答案:

答案 0 :(得分:1)

我猜您的密码或用户名包含使uri无效的符号。因此,您应该使用另一种方式来设置凭据:

var uri = new Uri("ftp://ftp.host.com/name.txt"); //no credentails in url
using (var webClient = new System.Net.WebClient())
{
    webClient.Credentials = new System.Net.NetworkCredential("user", "pass");
    webClient.DownloadFile(uri, @"C:\inetpub\wwwroot\name.txt");
}

或者您仍然可以在URL中使用密码,但是您需要按以下方式对特殊字符进行编码:

# -> %23     
/ -> %2F     
: -> %3A     
? -> %3F     
\ -> %5C     
% -> %25