-1

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)
{
}
4

4 に答える 4

2

あなたがする必要があるのは、すでに行っていると思われる外部 FTP クライアントと適切に接続することです。別の FTP クライアントが適切に接続されたら、すべての資格情報と設定が一致することを再確認できます。これを行ってもまだ機能しない場合は、外部 FTP クライアントとプログラムがWiresharkなどを使用してサーバーに送信しているものを分析し、要求ヘッダーの違いを確認する必要があります。あなたが見逃している簡単な設定があるかもしれません。

于 2012-09-25T13:29:13.920 に答える
1

確かではありませんが、読み取るデータがまだあるかどうかを検出するのに Peek() が理想的な選択肢であるかどうかはわかりません。ここで試みているように、ストリームがシークをサポートしていない場合、Peek() は -1 を返すことがあります。推奨される方法は、null が返されるまでループ内で ReadLine を使用することだと思います...

于 2012-09-25T13:30:32.037 に答える
0

FTP サーバーの URL で、シングル スラッシュ「/」をダブル スラッシュ「//」にします。

StreamReader を使用しないでください。ストリーム ライターを使用して、ファイルの byte[] 配列を書き込むだけです。

于 2013-06-21T16:19:02.127 に答える
0
  1. ファイルの場所が正確かどうかを確認してください- そこには長いファイル名があるので、正しいことをトリプルチェックしてください。

  2. FTP のユーザー名とパスワードが正しいことを確認してください。そうである場合は、そのファイルにアクセスするために、FTP サーバーで適切な権限を持っていることを確認してください。

  3. 接続する前に、FTP サーバーが最大接続数に達していないことを確認してください。

于 2012-09-25T13:31:41.487 に答える