0

Visual C# を使用してリモート FTP サーバーに接続し、サーバー上のフォルダーを一覧表示する実験を行っています。最終的に、ボタンをクリックするだけで、このサーバーにファイルを自動的にアップロードする方法を見つけようとしています。最初のステップは、リモート FTP サーバー上でフォルダーがどのように構成されているかを確認することだと考えました。ただし、デバッグで渡された結果を表示しようとすると、プロセスからエラーを受け取っていないにもかかわらず、空のように見え、デバッグのパラメーターにより、正常にログインしたように見えます。応答データのファイル転送完了メッセージ 226。FtpWebRequest関数でいろいろ試してみましたが、これが私が試した最新のコードです。UsePassive をオフにすると、永久にそこに留まり、サーバーから応答が返ってきません。

private void button4_Click(object sender, EventArgs e)
    {
        FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create("ftp://sampleftpplace.com/");
        ftpRequest.UseBinary = true;
        ftpRequest.Credentials = new NetworkCredential("username", "password");
        ftpRequest.EnableSsl = true;
        ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
        ftpRequest.Proxy = null;
        ftpRequest.Timeout = -1;
        ftpRequest.KeepAlive = false;
        //ftpRequest.UsePassive = false;
        FtpWebResponse response = (FtpWebResponse)ftpRequest.GetResponse();
        StreamReader streamReader = new StreamReader(response.GetResponseStream());

        List<string> directories = new List<string>();

        string line = streamReader.ReadLine();
        while (!string.IsNullOrEmpty(line))
        {
            directories.Add(line);
            line = streamReader.ReadLine();
        }

        streamReader.Close();
    }

「string line = streamReader.Readline();」の場合 が実行されると、変数「line」は null になります。私が実際に求めているのは、使用可能なフォルダーを確認することだけです。これにより、FTP サーバーの元のプログラマーがフォルダーをどのように構成し、どのような命名規則を使用したかを確認できます。そのプログラマーがもう利用できない場合、これは可能ですか?

4

1 に答える 1