如何检查FtpWebRequest是否存在错误

时间:2009-12-15 11:35:45

标签: c# powershell ftp ftpwebrequest

如果我使用System.Net.FtpWebRequest将文件上传到vsftpd服务器,是否需要使用GetResponse来检查文件是否正确上传?或者每个错误都会出现异常吗?我应该查看System.Net.FtpWebResponse中的内容?

1 个答案:

答案 0 :(得分: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包裹起来,如果出现问题,您将能够获取状态代码并将其打印到您正在使用的任何日志介质中,这样您就可以看到具体问题是什么。我修改了上面的代码以反映所有这些(只使用一种传输方式,你可以使用自己的方法)。