FTP下载,可以查看文件但不能下载,可能是由于uri映射问题

时间:2012-09-14 13:39:30

标签: c# .net ftp

我刚刚将应用程序从net 3.5升级到4.0

我使用ftp读取和传输文件。除了我连接的服务器之外,一切都很棒。该服务器开始时很奇怪,因为我必须返回一个目录并进入另一个目录:

“ftp.server.com”实际上让我进入ftp.server.com/up,我需要阅读ftp.server.com/out

我使用此网址获取文件列表:

ftp://ftp.server.com/%2fout

以这种方式创建Web请求:

var request = (FtpWebRequest) WebRequest.Create("ftp://ftp.server.com/%2fout");

我得到文件列表 - 没问题,所以该方法适用于连接到目录,但是当尝试读取其中一个文件时,我现在收到错误。

我以这种方式创建了这个请求:

 var request = (FtpWebRequest)WebRequest.Create("ftp://ftp.server.com/%2fout/" + filename);

我已将请求的URI记录为:

ftp://ftp.server.com//out/ORDER25260.xml_XL1014254ORDER25260_response.xml

我得到了这个堆栈跟踪:

The remote server returned an error: (550) File unavailable (e.g., file not found, no access).   at System.Net.FtpWebRequest.CheckError()
   at System.Net.FtpWebRequest.SyncRequestCallback(Object obj)
   at System.IO.Stream.Close()
   at System.Net.ConnectionPool.Destroy(PooledStream pooledStream)
   at System.Net.ConnectionPool.PutConnection(PooledStream pooledStream, Object owningObject, Int32 creationTimeout, Boolean canReuse)
   at System.Net.FtpWebRequest.FinishRequestStage(RequestStage stage)
   at System.Net.FtpWebRequest.SyncRequestCallback(Object obj)
   at System.Net.CommandStream.Abort(Exception e)
   at System.Net.CommandStream.CheckContinuePipeline()
   at System.Net.FtpDataStream.System.Net.ICloseEx.CloseEx(CloseExState closeState)
   at System.Net.FtpDataStream.Dispose(Boolean disposing)
   at System.IO.Stream.Close()
   at CustomModules.CustomModules.SupplierFunctions.FtpMethods.GetFile(SynsamSupplierSetting setting, String filename, Boolean deleteAfterLoad) in D:\WORK\dynamicweb\Source\CustomModules\SupplierFunctions\FtpMethods.cs:line 295

我使用相同的凭据通过FileZilla下载noproblem

有什么想法吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

使用此主题的信息解决了这个问题:

550 file unavailable error with FtpWebRequest class file upload. Works fine in FileZilla

用户SteveCalPoly写道:

  

显然,在从.NET 3.5移动时,CWD命令行为发生了变化   到4.0。

     

您必须先在此链接中调用该方法。

     

http://support.microsoft.com/kb/2134299

问题与上传有关,所以我在第一次谷歌中错过了答案