标签: ftpwebrequest

如何重用FtpWebRequest连接

我需要在FTP服务器上列出数千个文件,并删除必要的文件.您可以猜测,性能至关重要,因此我需要一种方法来重用FTP连接.

关于FtpWebRequests的连接使用情况,MSDN上没有足够的解释!它只说"如果可能,多个FtpWebRequests重用现有连接." "如果可能"是什么意思?我想控制何时关闭连接,简单就是这样!任何的想法?

问候

.net ftpwebrequest

8
推荐指数
1
解决办法
3555
查看次数

FTP"ls -lt"命令:它如何列出Linux FTP和Windows FTP服务器的文件详细信息?

我正在编写FTP客户端,至少应该适用于Windows和Linux FTP.在我继续之前,我想回答这些问题.

  1. 当FTP ls -lt命令用于Linux上的FTP服务器时,列出了哪些文件?
  2. 是否有任何特定的格式/逻辑,其中所有Linux FTP服务器都提供文件列表?例如,DateTime标记将始终存在,文件按"修改日期"的降序列出或类似这样.
  3. 当FTP ls -lt命令用于Windows上的FTP服务器时,列出了哪些文件?
  4. 是否有任何特定的格式/逻辑,其中所有Windows FTP服务器都提供文件列表?
  5. 你能指导我一些有助于理解这一点的文件吗?有没有为此定义的标准?

注意:我尝试在Windows和Linux FTP服务器上执行命令,但我无法找出任何特定的逻辑/格式.

linux ftp ftp-client ftpwebrequest ftp-server

8
推荐指数
1
解决办法
4万
查看次数

.Net FtpWebRequest有时会失败

我尝试使用FtpWebRequest列出文件详细信息,但很多时它会因WebException而失败并显示错误530用户未登录.

这怎么可能,它使用相同的凭据在某些时候工作?

摘自代码:

        reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpuri));
        reqFTP.UseBinary = true;
        reqFTP.Credentials = new NetworkCredential(userName, password);
        string[] downloadFiles = new string[0];
            reqFTP.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
            WebResponse response = reqFTP.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream());
            downloadFiles = reader.ReadToEnd().Replace("\r\n", "¤").Split('¤');
            reader.Close();
            response.Close();
Run Code Online (Sandbox Code Playgroud)

.net c# ftp ftpwebrequest

7
推荐指数
1
解决办法
2180
查看次数

使用FtpWebRequest输出日志

我想知道是否可以使用我的FTP客户端输出日志FtpWebRequest.

像这样的东西:

[R] USER xxx
[R] 331 Please specify the password.
[R] PASS (hidden)
[R] 230 Login successful.
[R] SYST
[R] 215 UNIX Type: L8
[R] FEAT
[R] 211-Features:
[R]  EPRT
[R]  EPSV
[R]  MDTM
[R]  PASV
[R]  REST STREAM
[R]  SIZE
[R]  TVFS
[R] 211 End
[R] PWD
[R] 257 "/"
[R] CWD /
[R] 250 Directory successfully changed.
[R] PWD
[R] 257 "/"
[R] TYPE A
[R] 200 Switching to ASCII mode.
[R] PASV
[R] 227 …
Run Code Online (Sandbox Code Playgroud)

c# ftp logging ftpwebrequest

7
推荐指数
2
解决办法
5553
查看次数

使用ftpWebRequest时出错:远程服务器返回错误530未登录

我想在c#中使用ftpWebRequest我的代码是

// Get the object used to communicate with the server.
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://192.168.20.10/file.txt");
            request.Method = WebRequestMethods.Ftp.UploadFile;

            // This example assumes the FTP site uses anonymous logon.
            request.Credentials = new NetworkCredential("dev\ftp", "devftp");

            // Copy the contents of the file to the request stream.
            StreamReader sourceStream = new StreamReader(@"\file.txt");
            byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
            sourceStream.Close();
            request.ContentLength = fileContents.Length;
            request.UsePassive = true;
            Stream requestStream = request.GetRequestStream();
            requestStream.Write(fileContents, 0, fileContents.Length);
            requestStream.Close();

            FtpWebResponse response = (FtpWebResponse)request.GetResponse();

            Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);

            response.Close();
Run Code Online (Sandbox Code Playgroud)

我在request.GetRequestStream()中得到一个错误; …

c# ftpwebrequest

7
推荐指数
3
解决办法
3万
查看次数

FtpWebRequest"远程证书根据验证程序无效"

我有一个.NET客户端应用程序,尝试将文件ftp到ftp站点,该站点具有自签名SSL证书.此ftp站点在Windows 7 Enterprise,IIS 7上运行.我收到以下错误:"远程证书根据验证过程无效".

我已尝试在受信任的根证书中安装证书,但仍然无效.

我在代码中使用了委托回调,这里提到了一些帖子 - 它有效.但我不想在我的生产代码中使用它.

同样在生产中,我们的一些客户使用自签名证书.

有关如何解决此问题的任何想法?

ssl certificate ftpwebrequest

7
推荐指数
3
解决办法
7839
查看次数

FtpWebResponse,操作超时

我想从ftp服务器下载基于日期时间的文件..我可以从CuteFtp第三方访问这个Ftp而且每件事都是Okey ..但是当我在第一行运行下面的代码时GetRespone()我得到这个错误:操作有时间出.我用webclient requet以编程方式从这个FTP下载了一个示例文件,它很好..但是我需要使用FtpWebRequest获取listDirectoryDe​​tail而webClient不支持..还有一件事,请求中有一个异常:FtpWebRequest.ContentType抛出异常类型System.NotSupportedException.

这是我的代码:

Uri uri = new Uri("ftp://192.168.1.5:2100/");//the private address
        if (uri.Scheme != Uri.UriSchemeFtp)
        {
            return;
        }
        FtpWebRequest reqFTP;
        reqFTP = (FtpWebRequest)WebRequest.Create(uri);                             
        reqFTP.Credentials = new NetworkCredential("myuser", "mypass");
        reqFTP.KeepAlive = false;
        reqFTP.Method = WebRequestMethods.Ftp.ListDirectoryDetails;                               
        reqFTP.UseBinary = true;
        reqFTP.Proxy = null;
        reqFTP.UsePassive = false;
        FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
Run Code Online (Sandbox Code Playgroud)

请帮忙 :(

c# ftpwebrequest request-timed-out ftpwebresponse

7
推荐指数
1
解决办法
9898
查看次数

修复 - System.Net.WebException:远程服务器返回错误:(500)语法错误,命令无法识别

我创建了FTP代码来传输文件.此代码工作正常,但它有时会导致错误500.确切的错误是 -

Error: System.Reflection.TargetInvocationException: Exception has 
been thrown by the target of an invocation. 
---> System.Net.WebException: The remote server returned an error: 
(500) Syntax error, command unrecognized.
   at System.Net.FtpWebRequest.CheckError()
   at System.Net.FtpWebRequest.SyncRequestCallback(Object obj)
   at System.Net.CommandStream.Abort(Exception e)
   at System.Net.FtpWebRequest.FinishRequestStage(RequestStage stage)
   at System.Net.FtpWebRequest.GetRequestStream()
   at ST_772dn22cj49ndfddatee.csproj.ScriptMain.Main()
   --- End of inner exception stack trace --- 
Run Code Online (Sandbox Code Playgroud)

我注意到加载最大文件时出现错误,即大约290 KB.所有其他文件都不到这个,我也没有例外.我不知道为什么会这样.有人可以告诉我为什么吗?

顺便说一句,如果您发现我的代码或逻辑错误有一些改进空间,那么请同时提及.我不是真的在寻找代码评论,但欢迎.

public void Main()
{

    Boolean conditions = true;

    if(conditions == true)
    {
    string fileLocation = "my windows directory";
    string fileName = "fileName.extension";

    string ftpFolder = @"/ftpFolder/";
    Boolean …
Run Code Online (Sandbox Code Playgroud)

.net c# ftp ftpwebrequest .net-3.5

7
推荐指数
1
解决办法
2万
查看次数

远程服务器返回错误:227进入被动模式(500 oops vs_utility_recv_peek:无数据)

我在将Windows服务连接到FTP站点时遇到问题.

我从另一个开发人员那里继承了一个Windows服务.该服务连接到第三方服务器,下载csv文件,然后处理它.出于某种原因,该服务停止工作(一年多前,在我获得该项目之前).

所以我回到基础,创建了一个控制台应用程序,并尝试仅在该应用程序中的连接/文件下载功能.我已经尝试了许多不同的方法来连接到FTP,但是所有这些方法都会向我的应用程序返回相同的错误:

远程服务器返回错误:227进入被动模式()

这是我尝试过的众多方法之一:

FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftpaddress/filename.csv");
        request.Method = WebRequestMethods.Ftp.DownloadFile;

        request.Credentials = new NetworkCredential("username", "password");

        request.UsePassive = true;

        FtpWebResponse response = (FtpWebResponse)request.GetResponse();

        Stream responseStream = response.GetResponseStream();
        StreamReader reader = new StreamReader(responseStream);
        Console.WriteLine(reader.ReadToEnd());

        Console.WriteLine("Download Complete, status {0}", response.StatusDescription);

        reader.Close();
        response.Close(); 
Run Code Online (Sandbox Code Playgroud)

但它落在这一部分:

FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Run Code Online (Sandbox Code Playgroud)

我在几个论坛中读到将UsePassive属性设置为False修复了这些错误,但发生在我身上的一切都是因为我得到了语法错误,如下所示:

远程服务器返回错误:(500)语法错误,命令无法识别.

该文件托管在我无法控制的第三方FTP服务器上.我可以将URL粘贴到浏览器中,并提示我输入用户名和密码,然后允许我通过,我可以下载该文件.

为了消除我们的防火墙作为问题的原因,我在内部网络和WiFi(不在防火墙后面)运行应用程序,它没有任何区别.我还通过FileZilla以默认,主动和被动模式连接,并且每次都有效.那没问题.

然后我运行了Wireshark.这是使用Filezilla(即成功的)线程捕获的图像,处于被动模式:

在此输入图像描述

这是使用应用程序连接(和失败)时的捕获,被动设置为true:

在此输入图像描述

因此,您可以在上面的失败连接中看到,我可以很好地登录到服务器.然后无论出于何种原因发送额外请求,即"TYPE I",它提示"切换到二进制模式"的响应.在下面,我得到以下内容:

500 oops:vsf_sysutil_recv_peek:没有数据

另外,我将Passive属性设置为false后再次运行它,这就是我得到的时间:

在此输入图像描述

所以我的问题是双重的;

1,如果我以某种方式超越UsePassive问题并将该属性设置为false,那么这会解决我的问题吗?

2,忽略UsePassive属性,为什么我不能从应用程序下载文件,但可以从其他地方下载?

.net c# ftp ftpwebrequest

7
推荐指数
1
解决办法
3万
查看次数

使用FtpWebRequest重命名文件

将文件移动到另一个FTP位置时,必须使用RenameTo新的FTP位置.

在此示例中,您如何使用RenameTo移动到新的FTP位置?

FtpWebRequest ftpRequest = null;
FtpWebResponse ftpResponse = null;
try
{
    ftpRequest = (FtpWebRequest)WebRequest.Create("ftp://mysite.com/folder1/fileName.ext");
    ftpRequest.Credentials = new NetworkCredential("user", "pass");
    ftpRequest.UseBinary = true;
    ftpRequest.UsePassive = true;
    ftpRequest.KeepAlive = true;
    ftpRequest.Method = WebRequestMethods.Ftp.Rename;
    ftpRequest.RenameTo = "ftp://mysite.com/folder2/fileName.ext";
    ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
    ftpResponse.Close();
    ftpRequest = null;
}
catch (Exception ex) { Label1.Text = (ex.ToString()); }
Run Code Online (Sandbox Code Playgroud)

.net c# ftp ftpwebrequest

7
推荐指数
1
解决办法
8507
查看次数