我目前收到以下错误:
远程服务器返回错误:(501)参数或参数中的语法错误。
我已经检查过服务器并且文件确实存在,如果我打开一个命令提示符并输入以下代码:
ftp
open 192.168.1.2
cd /Images
get S12345.jpeg
这是正常的,但是只要我尝试通过此代码进行连接:
private bool DownloadPod(string server)
{
string[] allocate = server.Split('\\');
string ftp = @"ftp://192.168.1.2/Images/" + allocate.Last();
Uri uri = new Uri(ftp);
// The code path for uri: ftp://192.168.1.2/Images/S12345.jpeg
var request = WebRequest.Create(uri) as FtpWebRequest;
if(request != null)
{
request.Method = WebRequestMethods.Ftp.DownloadFile;
// Left credentials off for security.
request.Credentials = new NetworkCredential(@"", @"");
// The line that triggers the error (response)
using(FtpWebResponse response = request.GetResponse() as FtpWebResponse)
using(Stream stream = response.GetResponseStream())
using(StreamReader reader = new StreamReader(stream))
{
reader.ReadToEnd();
return true;
}
}
return false;
}
有人可以向我解释为什么这不起作用吗?
根据MSDN:
要获取FtpWebRequest的实例,请使用Create方法。您可以 还可以使用WebClient类从中上载和下载信息 一个FTP服务器。使用这些方法之一时,指定a 使用FTP方案的网络资源(例如, “ftp://contoso.com”)FtpWebRequest类提供了能力 以编程方式与FTP服务器交互。
URI可以是相对的或绝对的。如果URI是表单 “ftp://contoso.com/%2fpath”(%2f是转义'/'),然后是URI 绝对,当前目录是/ path。但是,如果是URI 形式为“ftp://contoso.com/path”,首先是.NET Framework日志 进入FTP服务器(使用用户名和密码设置) 凭据属性),然后将当前目录设置为 /路径。
AS400期望数据通过的方式。
答案 0 :(得分:3)
在某些情况下,/
字符无效或被接受。
AS400可能需要使用/%2F
进行更改,这将正确切换AS400上的目录。例如:
ftp://192.168.1.2/%2FImages/%2FS12345.jpeg
通过使用/%2F
,它允许它在目录之间移动。
可以找到其他详细信息here。