FTP上载文件使用HTTP代理时不支持请求的FTP命令
有人可以看看下面的代码并告诉我我做错了什么。 我只是在圈子里,任何指针都非常感激
public class FtpWebRequestUtil { private static string RemoteHost; private static string RemoteFtpPath; public static NetworkCredential Credential = new NetworkCredential(); public FtpWebRequestUtil() { } public FtpWebRequestUtil(string RemoteAddress, string RemotePath, string RemoteUser, string RemotePwd) { Credential.UserName = RemoteUser; Credential.Password = RemotePwd; RemoteHost = RemoteAddress; RemoteFtpPath = RemotePath; } public string UploadFile(string localFilePath) { int startTime = Environment.TickCount; // Console.WriteLine("Uploading File " + localFilePath); try { FileInfo localFile = new FileInfo(localFilePath); //eg: c:\Test.txt byte[] buf = new byte[2048]; int iWork; string remoteFile = "ftp://" + RemoteHost + "/" + RemoteFtpPath + "/" + localFile.Name; FtpWebRequest req = (FtpWebRequest) FtpWebRequest.Create(remoteFile); // req.Proxy = req.Credentials = Credential; // FtpWebRequest req = (FtpWe req.UseBinary = true; req.KeepAlive = true; req.Method = WebRequestMethods.Ftp.UploadFile; StreamWriter myStreamWriter = new StreamWriter(req.GetRequestStream()); myStreamWriter.Write(new StreamReader("TestFiles\" + localFile.Name).ReadToEnd()); myStreamWriter.Close(); FtpWebResponse myFtpWebResponse = (FtpWebResponse) req.GetResponse(); Console.WriteLine("Upload File Complete, status: " + myFtpWebResponse.StatusDescription); myFtpWebResponse.Close(); return "SUCCESS"; } catch (Exception ex) { Console.WriteLine("There was an error connecting to the FTP Server."); Console.WriteLine(ex.Message); throw ex; } Console.WriteLine("Time taken for downloading file is " + (Environment.TickCount - startTime).ToString()); return "FAILURE"; } ************************ ********************************* FtpWebRequestUtil ftpClient = new FtpWebRequestUtil(FtpUrl, InputFolder, FtpUser, FtpPassword); try { Thread.Sleep(5000); ftpClient.UploadFile(UploadingFileName); } catch (Exception exception) { Assert.Fail(exception.Message); } finally { ftpClient = null; } } }
req.Proxy = new WebProxy(); // initialize this FtpWebRequest property
事实certificate,当配置HTTP
代理时, System.Net.FtpWebRequest
仅支持RETR
, LIST
和NLST
方法,并且您没有在代码中设置代理并不重要:如果是HTTP
代理(不是FTP
代理)在系统代理设置中配置(即:Internet选项连接 LAN设置代理服务器为您的LAN使用代理服务器),然后在尝试上传到FTP
服务器时会出现此错误。
解决方法是使用IE更改系统设置以关闭HTTP
代理的使用。 但是,如果您有权访问受影响的代码,则解决方案是将请求的Proxy
属性设置为null,例如:
request.Proxy = null;
例外本身就是答案 – 它不受支持。 可能你有一些HTTP代理阻止直接连接到FTP。 根据MS文档 ,如果指定的代理是HTTP代理,则仅支持DownloadFile,ListDirectory和ListDirectoryDetails命令 – 因此不支持UploadFile。
上述就是C#学习教程:FTP上载文件使用HTTP代理时不支持请求的FTP命令分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/983417.html