【发布时间】:2014-10-23 14:14:37
【问题描述】:
我目前收到以下错误:
远程服务器返回错误:(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 服务器。使用这些方法中的任何一种,当您指定一个 使用 FTP 方案的网络资源(例如, "ftp://contoso.com") FtpWebRequest 类提供了以下功能 以编程方式与 FTP 服务器交互。
URI 可以是相对的或绝对的。如果 URI 的格式为 “ftp://contoso.com/%2fpath”(%2f 是转义的 '/'),则 URI 为 绝对的,当前目录是/path。但是,如果 URI 是 形式为“ftp://contoso.com/path”,首先是 .NET Framework 日志 进入 FTP 服务器(使用由服务器设置的用户名和密码) Credentials 属性),则当前目录设置为 /路径。
AS400 期望数据以何种方式通过。
【问题讨论】:
-
您在浏览器中尝试过该网址吗?在 ftp 客户端中输入登录名、cd 和 get 命令与通过代码生成的任何 url 输入不同。