C#のFtpWebRequestでディレクトリ削除ができない

C#のFtpWebRequestでディレクトリ削除ができない

.NET C#C#のFtpWebRequestでディレクトリ削除ができない

.NET C# の FtpWebRequest を利用して FTP の操作をあれこれしていましたが、特定の条件下において、ディレクトリの削除ができなかったので調査してみました。空ディレクトリを作成した直後にはディレクトリ削除は可能で、ディレクトリに対するファイルの入出力が複数のリモートホストからあった場合に削除ができなくなります。

実際に、WebException で catch されるエラーを確認してみると以下の通りです。

リモート サーバーがエラーを返しました: (451) プロセス中のローカル エラーです

複数のリモートホストの FTP サーバに対するプロセスを確認しながら、接続関連の KeepAlive やタイムアウトなどを調整してみましたが解決に至らず、最終的に FTP クライアントソフトを使って試してみることに。すると、ディレクトリ削除までのフローは、中身のファイルを 1 つずつ削除(DELETE)してから、最後にディレクトリを削除(REMOVE)していることが判明。

今までプログラム内で FTP の操作をする機会がなかったとはいえ、各プロトコルの勉強不足が明確となりました。

結果的に、対象のディレクトリのファイル一覧を取得して、それを 1 つずつ削除した後にディレクトリを削除することで解決しました。もっと他に方法があるのだろうか。

最終更新日:

関連記事

人気記事

新着情報