6

vsftpd サーバーにファイルSystem.Net.FtpWebRequestをアップロードする場合、ファイルが正しくアップロードされたかどうかを確認するために GetResponse を使用する必要がありますか? または、すべてのエラーに対して例外が発生しますか? 何System.Net.FtpWebResponseをチェックすればいいですか?

4

1 に答える 1

6

ええ、あなたはリクエストオブジェクトからFTPWebResponseオブジェクトを取得したいと思います...このように:

 FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri);
 request.Method = WebRequestMethods.Ftp.UploadFile;

 FtpWebResponse response = (FtpWebResponse) request.GetResponse();
 request.KeepAlive = false;

 byte[] fileraw = File.ReadAllBytes("CompleteLocalPath");

 try
 {
     Stream reqStream = request.GetRequestStream();

     reqStream.Write(fileraw, 0, fileraw.Length);
     reqStream.Close();
 }  
 catch (Exception e)
 {
     response = (FtpWebResponse) request.GetResponse();
     // Do something with response.StatusCode
     response.Close();
 }

Ftp.WebResponse.StatusCodeを確認する必要があります。

StatusCodeには返される可能性のあるメンバーがかなりあるため、それをチェックするのは難しい場合があります。

返される可能性のあるコード/説明のリストは次のとおりです。

FtpStatusCode

編集:転送で問題が発生した場合、ストリームライターを起動したときに例外がスローされるはずです。できることは、すべてをtry-catchでラップすることです。問題が発生した場合は、ステータスコードを取得して、使用しているログメディアに出力できるため、特定の問題が何であるかを確認できます。これらすべてを反映するように上記のコードを修正しました(転送の1つの方法を使用するだけで、独自の方法を使用できます)。

于 2009-12-15T14:19:42.087 に答える