Question

I have some problem in my project. I want to delete my file from the ftp using proxy.

My code is:

                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();

In this i'm getting error like: The requested FTP Command is not supported when using http proxy

can any one please help me

Thanks in advance

Was it helpful?

Solution

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

Note on using Http Proxy on FTPWebRequest: Http proxy is only supported for limited number of ftp methods (mainly to download file only), so if you have IE settings for proxy on your machine you need to explicitly set FtpWebRequest to not use proxy like below

request.Proxy = GlobalProxySelection.GetEmptyWebProxy();

If you want to perform other FTP actions through a proxy, you'll have to find another FTP component that supports it.

OTHER TIPS

Instead of request.Proxy = GlobalProxySelection.GetEmptyWebProxy();

try request.Proxy = WebRequest.DefaultWebProxy;

Follows a demo code that worked well for me:

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();
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top