次の方法を使用して、フォルダーの内容を一覧表示しています。
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 を有効にしないとmyusername2FileZilla に接続できません。myusername1ftprequest.EnableSsl有効にせずに私のC#メソッド内で動作します。myusername2が有効になっているかどうかに関係なく、C# メソッド内では機能しませんftprequest.EnableSsl。using()私のステートメントの行で例外がトリガーされています。
他に気づいたことがあります。自分の上にftprequestカーソルを合わせると、NotSupportedException が表示されますが、これは使用する資格情報のセットに関係なく表示されます
ftprequestを使用しているときにイニシャルにカーソルを合わせると、 のmyusername2前にスローされた例外が表示されますusing()。
