How to get the ftp server error when handling an System.Net.WebException?
Status field only report an Protocol error for most errors like login failure.
For context, the following client code as an example:
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
...
}
The Response is actually an FtpWebResponse
. By casting ex.Response
to FtpWebResponse
, I can get access to server error through StatusCode
.
Example:
catch (WebException ex)
{
var ftpResponse = ex.Response as FtpWebResponse;
log.Error(ftpResponse.StatusCode); //as enumerate
log.Error((int)ftpResponse.StatusCode); //as integer
}