错误:(502)命令未实现。使用FtpWebResponse .net

时间:2013-06-25 20:27:13

标签: c# .net ftp ftpwebrequest

Aright,所以这就是它如何发展我正在尝试建立一个轮询系统来从几个激光系统中提取日志文件,每个激光系统都有自己的ftp。但是,在尝试调用FtpWebResponse调用来下载日志文件时,我遇到了困难,以下是我正在使用的代码:

// Get the object used to communicate with the server.
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://192.168.10.140/param.dat");
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.Credentials = new NetworkCredential("user", "pass");
request.UsePassive = false;
request.Proxy = null;
request.UseBinary = true;

FtpWebResponse response = (FtpWebResponse)request.GetResponse();

所以我冻结了最后一行:“远程服务器返回错误:(502)命令未实现。”

我有几种不同的方法从系统中获取文件只是为了看看它是否是某种设置我不知道这是我的结果:

  • Microsoft CMD.exe:连接正常,可以下载文件并执行标准的ftp命令
  • Internet Explorer:输入地址到文件,它可以正常下载文件
  • Firefox:“远程服务器返回错误:(502)命令未实现。”
  • Chrome:“错误606(net :: ERR_FTP_COMMAND_NOT_SUPPORTED):未知错误。”

现在我在激光系统的实际ftp设置上没有太多的信息,因为我不会进入这里的长篇故事但是从我所看到的可能它使用某种遗留协议IE和CMD支持或者我遗漏了一些明显的东西。我试图翻转FtpWebRequest设置,但似乎没有任何效果。我真的很想使用这个解决方案,并没有程序自动构建ftp批处理文件,因为它真的只是让人感到难过,因为在程序中运行的所有东西都会更优雅,更容易使用。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

可能导致502错误的一个原因是在服务器上禁用它时尝试使用活动模式。尝试使用被动模式:

request.UsePassive = true

另外,来自documentation

  

URI可以是相对的或绝对的。如果URI是表单   " ftp://contoso.com/%2fpath" (%2f是转义的' /'),然后是URI   绝对,当前目录是/ path。但是,如果是URI   形式" ftp://contoso.com/path",首先是.NET Framework日志   进入FTP服务器(使用用户名和密码设置)   凭据属性),然后将当前目录设置为   /路径。

尝试将您的URI更改为绝对形式 - 这可能有助于避免您看到的PWD。