【发布时间】:2012-11-05 16:28:35
【问题描述】:
我正在尝试连接到 FTP 服务器以上传文件。我得到了“ 无法连接”错误。如果我使用命令行并打开 FTP 连接,我可以连接。不知道为什么在以编程方式连接时会出错。任何帮助都将不胜感激。
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://1.23.84.2");
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential("user","password");
// Copy the contents of the file to the request stream.
StreamReader sourceStream = new StreamReader(path);
byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
request.ContentLength = fileContents.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Console.WriteLine("Upload File Complete, status {0}",
response.StatusDescription);
response.Close();
【问题讨论】:
-
您的防火墙可能会阻止这些端口。尝试从机器(不是从 ftp 服务器“1.23.84.2"”)远程登录到 ftp 端口...使用 cmd 提示符下的命令提示符,键入:telnet 1.23.84.221
-
你是对的!如果我 telnet 到上述 IP 地址,我会收到错误“无法在端口 23 上打开与主机的连接”
-
@tranceporter,我需要使用代理来连接吗?
-
仅供参考,您还应该在
using块中包含您的StreamReader、Stream和FtpWebResponse,以确保无论是否发生异常它们都得到清理。 -
@JohnSaunders 感谢您的提示。我会毫不犹豫地将它包装在 using 块中。
标签: c# ftpwebrequest