0

我的项目有一些问题。我想使用代理从 ftp 中删除我的文件。

我的代码是:

                FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://" + FtpServerName + FtpFilePath);
                request.Method = WebRequestMethods.Ftp.DeleteFile;


                request.Proxy = new WebProxy(ProxyAddress);
                request.Proxy.Credentials = new NetworkCredential(ProxyUserName,     ProxyPassword);

                request.Credentials = new NetworkCredential(FTPUserName, FTPPassword);
                FtpWebResponse response = (FtpWebResponse)request.GetResponse();

在此我收到错误消息:使用 http 代理时不支持请求的 FTP 命令

谁能帮帮我吗

提前致谢

4

2 回答 2

1

来自http://blogs.msdn.com/b/adarshk/archive/2004/09/13/229069.aspx

关于在 FTPWebRequest 上使用 Http 代理的注意事项:Http 代理仅支持有限数量的 ftp 方法(主要仅用于下载文件),因此如果您的机器上有代理的 IE 设置,您需要显式设置 FtpWebRequest 以不使用代理,如下所示

request.Proxy = GlobalProxySelection.GetEmptyWebProxy();

如果您想通过代理执行其他 FTP 操作,则必须找到另一个支持它的 FTP 组件。

于 2012-09-25T13:45:56.183 回答
0

代替request.Proxy = GlobalProxySelection.GetEmptyWebProxy();

尝试request.Proxy = WebRequest.DefaultWebProxy;

遵循对我来说效果很好的演示代码:

var request = (FtpWebRequest)WebRequest.Create(new Uri("ftp://99.999.99.99/TextFile1.txt"));
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential("ftp_user", "ftp_pass"); // it's FTP credentials, not proxy
request.Proxy = WebRequest.DefaultWebProxy;

var sourceStream = new StreamReader("TextFile1.txt");
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();

var response = (FtpWebResponse)request.GetResponse();
Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);
response.Close();
于 2014-12-01T15:36:53.940 回答