是的,下面是我尝试建立一个轮询系统,从几个激光系统中提取日志文件,每个系统都有自己的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)命令未实现。”
我有几种不同的方法从系统中抓取文件,看看是否是某种设置--这是我的结果:
现在,我在激光系统上的实际ftp设置上没有多少信息,因为我不会进入这里,但从我所看到的情况来看,它可能使用了IE和CMD支持的某种遗留协议,或者我遗漏了一些显而易见的东西。我尝试过翻转FtpWebRequest设置,但似乎没有任何效果。我真的很想使用这个解决方案,而不是让程序自动构建ftp批处理文件,因为它只会让人感到悲哀,因为在程序中运行所有的东西都会更优雅,更容易使用。伙计们有什么想法吗?
发布于 2013-06-25 20:39:12
可能导致502错误的原因之一是在服务器上禁用激活模式时尝试使用活动模式。尝试使用被动模式:
request.UsePassive = true同时,来自文档
URI可以是相对的,也可以是绝对的。如果URI的形式是"ftp://contoso.com/%2fpath“(%2f是转义的'/'),那么URI是绝对的,当前目录是/path。但是,如果URI的形式为"ftp://contoso.com/path",则.NET框架首先登录到.NET服务器(使用凭据属性设置的用户名和密码),然后将当前目录设置为/path。
尝试将URI更改为绝对形式--它可能有助于避免您正在看到的PWD。
https://stackoverflow.com/questions/17306890
复制相似问题