0

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

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

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

我使用这个 url 得到一个文件列表:

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 下载没有问题

任何的想法?

提前致谢

4

1 回答 1

0

使用此线程上的信息解决了这个问题:

550 文件不可用错误与 FtpWebRequest 类文件上传。在 FileZilla 中运行良好

用户 SteveCalPoly 写道:

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

您必须首先调用此链接中的方法。

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

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

于 2012-09-17T11:41:44.470 回答