次の方法を使用して、フォルダーの内容を一覧表示しています。
private void TestFtp()
{
try
{
// List all of the files from FTP
FtpWebRequest ftprequest = (FtpWebRequest)WebRequest.Create(new Uri("ftp://m3database/recover/"));
ftprequest.Credentials = new NetworkCredential("myusername1", "********");
ftprequest.Method = WebRequestMethods.Ftp.ListDirectory;
ftprequest.UsePassive = false;
ftprequest.Proxy = null;
using (var resp = ftprequest.GetResponse())
{
StreamReader reader = new StreamReader(resp.GetResponseStream());
MessageBox.Show(reader.ReadToEnd());
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
FTP経由で単一のLinuxサーバーに接続しています。と の資格情報を使用しmyusername1
てmyusername2
接続しています。
myusername1
資格情報を使用している場合、この関数を使用するとディレクトリの内容を一覧表示できますが、使用myusername2
すると次のエラーが発生します。
リモート サーバーがエラーを返しました: (503) コマンドのシーケンスが正しくありません。
私が試したこと:
- 設定してみ
ftprequest.KeepAlive = false
ました。 - UsePassive、Proxyなどのすべての順列を使用してみました.
- セキュア FTP を有効にした FileZilla を使用して両方のユーザー名に接続でき、両方とも機能します。FTP を有効にしないと、どちらも接続できません。
myusername1
コード内で SSL を有効にせずにコードを使用して接続するのは奇妙です。
要約すれば:
myusername1
安全な FTP を有効にしないとmyusername2
FileZilla に接続できません。myusername1
ftprequest.EnableSsl
有効にせずに私のC#メソッド内で動作します。myusername2
が有効になっているかどうかに関係なく、C# メソッド内では機能しませんftprequest.EnableSsl
。using()
私のステートメントの行で例外がトリガーされています。
他に気づいたことがあります。自分の上にftprequest
カーソルを合わせると、NotSupportedException が表示されますが、これは使用する資格情報のセットに関係なく表示されます
ftprequest
を使用しているときにイニシャルにカーソルを合わせると、 のmyusername2
前にスローされた例外が表示されますusing()
。