如何从 System.Net.WebException 获取 ftp 错误

How to get ftp error from System.Net.WebException

如何在处理 System.Net.WebException 时获取 ftp 服务器错误?

状态字段仅报告登录失败等大多数错误的协议错误。

上下文,以下客户端代码为例:

try {
    FtpWebRequest request = 
      (FtpWebRequest)WebRequest.Create("ftp://mars/test.htm");  
    request.Method = WebRequestMethods.Ftp.DownloadFile;  

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

    Stream responseStream = response.GetResponseStream();  
    StreamReader reader = new StreamReader(responseStream);  
    Console.WriteLine(reader.ReadToEnd());  

    reader.Close();  
    response.Close();    
}    
catch (WebException ex)
{
   //get the server error
   ...
}

响应实际上是 FtpWebResponse。通过将 ex.Response 转换为 FtpWebResponse,我可以通过 StatusCode.

访问服务器错误

示例:

  catch (WebException ex)
  {
       var ftpResponse = ex.Response as FtpWebResponse;                      
       log.Error(ftpResponse.StatusCode); //as enumerate
       log.Error((int)ftpResponse.StatusCode); //as integer
  }