Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用C从FTP服务器读取CSV文件#_C#_Asp.net_Ftpwebrequest - Fatal编程技术网

C# 使用C从FTP服务器读取CSV文件#

C# 使用C从FTP服务器读取CSV文件#,c#,asp.net,ftpwebrequest,C#,Asp.net,Ftpwebrequest,我试图使用c从ftp服务器读取CSV文件,但问题是它不允许我读取并抛出此错误 远程服务器返回错误:(530)未登录。 我花了很多时间研究这个问题,不幸的是我还没有找到解决办法。任何帮助都将不胜感激 代码如下: StringBuilder result = new StringBuilder(); FtpWebRequest reqFTP; try { String ftpserver = "ftp://domain.com/StatusChanges_20120922_043057.cs

我试图使用c从ftp服务器读取CSV文件,但问题是它不允许我读取并抛出此错误

远程服务器返回错误:(530)未登录。

我花了很多时间研究这个问题,不幸的是我还没有找到解决办法。任何帮助都将不胜感激

代码如下:

StringBuilder result = new StringBuilder();
FtpWebRequest reqFTP;
try
{
    String ftpserver = "ftp://domain.com/StatusChanges_20120922_043057.csv";

    reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpserver));
    reqFTP.UsePassive = false;
    reqFTP.UseBinary = true;
    reqFTP.Credentials = new NetworkCredential("test@domain.com", "password");
    reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
    reqFTP.Proxy = GlobalProxySelection.GetEmptyWebProxy();
    FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();

    StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);
    string line = "";

    while (reader.Peek() > -1)
    {
        line = reader.ReadLine();
        Console.WriteLine(line);//**********HTML was wrote out here*************
    }

    if (result.ToString().LastIndexOf('\n') >= 0)
        result.Remove(result.ToString().LastIndexOf('\n'), 1);
    reader.Close();
    response.Close();

    return result.ToString();
}
catch (Exception ex)
{
}

您需要做的是让它与外部FTP客户端正确连接,我假设您已经这样做了。一旦另一个FTP客户端正确连接,您可以再次检查所有凭据和设置是否匹配。完成此操作后,仍然无法工作,您应该使用类似的方法分析外部FTP客户端和程序发送到服务器的内容,并查看请求头中的差异。可能您缺少一个简单的设置

不确定,但我不知道Peek()是否是检测是否有更多数据需要读取的理想选择。如果您在这里尝试查找时,流不支持查找,则Peek()可以返回-1。我认为首选的方法是在循环中使用ReadLine,直到它返回null

  • 检查您的文件位置是否完全正确-您有一个很长的文件名,所以请再次检查它是否正确

  • 确保FTP的用户名/密码正确。如果是,请确保他们在FTP服务器上具有访问该文件的正确权限

  • 在连接到FTP服务器之前,请确保它没有达到最大连接数

  • 将FTP服务器URL中的单斜杠“/”改为双斜杠“/”

    不要使用StreamReader。只需使用streamwriter写入文件byte[]数组