- 題名: FTPサーバーのディレクトリ削除
- 日時: 2009/09/22 11:33:18
- ID: 25432
- この記事の返信元:
- (なし)
- この記事への返信:
- [25438] Re[1]: FTPサーバーのディレクトリ削除2009/09/24 3:39:32
- ツリーを表示
■No25439に返信(binさんの記事) >>> リモート サーバーがエラーを返しました: (550) RemoveDirectory 時に 550 (FtpStatusCode.ActionNotTakenFileUnavailable) が 発生する要因としては、下記のような物が考えられます。 ・空っぽでは無いディレクトリを削除しようとした(空で無いと削除できない FTP サーバーの場合)。 ・指定するパスを間違えていた。 ・削除のための権限が不足している。 ・サーバー側の異常(ディスクアクセスエラー等)。 > 最初にやった時もWebRequestMethods.Ftp.RemoveDirectoryを指定したのですが、 > 今回は下記のようなエラーがまた出ました。 前回は「リモート サーバーがエラーを返しました: (550)」という エラーですよね。今回の実行にあたり、何を変更されましたか? > WebExceptionはハンドルされませんでした。 > リモート名を解決できませんでした。: 'binam77.ie-yasu.com' 接続先は、'localhost' であったはずですよね。 >> Dim u As New Uri("ftp://localhost/test.txt") それなのに、'binam77.ie-yasu.com' が参照されるのは妙ですね。 コードと環境のどちらに問題があるのか、見極める必要がありそうです。 > これで終わらせていただきたいと思います。 なお当方環境では、下記のコードで testDirectory ディレクトリの作成と破棄が行えました。 (接続先の FTP サーバーは、IIS 6.0 です) 'Imports System.Net 'Imports System.IO Dim ftpReq As FtpWebRequest Dim credentials As New NetworkCredential(username, password) Console.WriteLine("ファイル一覧を取得 (NLST/ListDirectory)") ftpReq = DirectCast(WebRequest.Create("ftp://server/"), FtpWebRequest) ftpReq.Credentials = credentials ftpReq.KeepAlive = True ftpReq.Method = WebRequestMethods.Ftp.ListDirectory Using ftpRes As FtpWebResponse = DirectCast(ftpReq.GetResponse(), FtpWebResponse) Console.WriteLine("{0}: {1}", ftpRes.StatusCode, ftpRes.StatusDescription) Using response As New System.IO.StreamReader(ftpRes.GetResponseStream()) Console.WriteLine(response.ReadToEnd()) response.Close() End Using ftpRes.Close() End Using Console.WriteLine("ディレクトリ[testDirectory]を作成 (MKD/MakeDirectory)") ftpReq = DirectCast(WebRequest.Create("ftp://server/testDirectory"), FtpWebRequest) ftpReq.Credentials = credentials ftpReq.KeepAlive = True ftpReq.Method = WebRequestMethods.Ftp.MakeDirectory Using ftpRes As FtpWebResponse = DirectCast(ftpReq.GetResponse(), FtpWebResponse) Console.WriteLine("{0}: {1}", ftpRes.StatusCode, ftpRes.StatusDescription) ftpRes.Close() End Using Console.WriteLine("ディレクトリ[testDirectory]を削除 (RMD/RemoveDirectory)") ftpReq = DirectCast(WebRequest.Create("ftp://server/testDirectory"), FtpWebRequest) ftpReq.Credentials = credentials ftpReq.KeepAlive = False ftpReq.Method = WebRequestMethods.Ftp.RemoveDirectory Using ftpRes As FtpWebResponse = DirectCast(ftpReq.GetResponse(), FtpWebResponse) Console.WriteLine("{0}: {1}", ftpRes.StatusCode, ftpRes.StatusDescription) ftpRes.Close() End Using ---------- FTP サーバー側の通信ログ ---------- #Fields: time cs-method cs-uri-stem sc-status sc-win32-status 14:09:25 [1]USER username 331 0 14:09:25 [1]PASS - 230 0 14:09:25 [1]CWD / 250 0 14:09:30 [1]MKD testDirectory 257 0 14:09:32 [1]RMD testDirectory 250 0 14:09:32 [1]QUIT - 250 0 ----------------------------------------
分類:[.NET]
間違ってコンテンツの方に投稿しました。すみません。再投稿です。
本サイトのFTPサーバーのファイルやディレクトリ削除についてお教えください。
・ファイルについては正常に削除されましたが、ディレクトリについては
エラーとなりました。エラーメッセージは下記の通りです。
リモート サーバーがエラーを返しました: (550)
ファイルが使用できません (例: ファイルが見つからない、
ファイルへのアクセスがない)
ディレクトリを thum とした時、下記をどのように修正すればよいのか
お教えください。よろしくお願いします。
Dim u As New Uri("ftp://localhost/test.txt")
'FtpWebRequestの作成
Dim ftpReq As System.Net.FtpWebRequest = _
CType(System.Net.WebRequest.Create(u), System.Net.FtpWebRequest)
'ログインユーザー名とパスワードを設定
ftpReq.Credentials = New System.Net.NetworkCredential("username", "password")
'MethodにWebRequestMethods.Ftp.DeleteFile(DELE)を設定
ftpReq.Method = System.Net.WebRequestMethods.Ftp.DeleteFile
'FtpWebResponseを取得
Dim ftpRes As System.Net.FtpWebResponse = _
CType(ftpReq.GetResponse(), System.Net.FtpWebResponse)
'FTPサーバーから送信されたステータスを表示
Console.WriteLine("{0}: {1}", ftpRes.StatusCode, ftpRes.StatusDescription)
'閉じる
ftpRes.Close()