G
Guest
Hello. I am trying to use FtpWebRequest to send a file. Everything was
initially working fine until the ftp server had a load balancer installed.
Now when I connect and try to send a file, I get the following exception:
{System.Net.WebException} The data connection was made from an address that
is different than the address to which the FTP connection was made.
Does anyone know how to handle this? Here is the code I am using to send the
file:
public bool SendFtpFile(FtpParamaters paramaters)
{
try
{
bool result = false;
// Read local file
byte[] fileBytes = GetBytes(paramaters.LocalFile);
// Initialize Ftp Request
Uri target = new Uri(paramaters.FtpHost + paramaters.FtpHostPath +
paramaters.LocalFile.Name);
FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(target);
ftp.Credentials = new
NetworkCredential(paramaters.LoginName,paramaters.Password);
ftp.KeepAlive = true;
ftp.UseBinary = false;
ftp.UsePassive = false;
ftp.Method = WebRequestMethods.Ftp.UploadFile;
ftp.Timeout = paramaters.FtpTimeout; ;
ftp.CachePolicy = new
System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.BypassCache);
// load file into ftp request
ftp.ContentLength = fileBytes.Length;
// *** THE FOLLOWING LINE IS WHERE THE EXCEPTION IS THROWN *** //
Stream requestStream = ftp.GetRequestStream();
requestStream.Write(fileBytes, 0, fileBytes.Length);
requestStream.Close();
// Make the Ftp Request
FtpWebResponse response = (FtpWebResponse)ftp.GetResponse();
if (response.StatusDescription.Trim() == "226 Transfer complete.")
result = true;
response.Close();
return result;
}
catch (Exception ex)
{
throw new FtpException("Error sending file", ex);
}
}
initially working fine until the ftp server had a load balancer installed.
Now when I connect and try to send a file, I get the following exception:
{System.Net.WebException} The data connection was made from an address that
is different than the address to which the FTP connection was made.
Does anyone know how to handle this? Here is the code I am using to send the
file:
public bool SendFtpFile(FtpParamaters paramaters)
{
try
{
bool result = false;
// Read local file
byte[] fileBytes = GetBytes(paramaters.LocalFile);
// Initialize Ftp Request
Uri target = new Uri(paramaters.FtpHost + paramaters.FtpHostPath +
paramaters.LocalFile.Name);
FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(target);
ftp.Credentials = new
NetworkCredential(paramaters.LoginName,paramaters.Password);
ftp.KeepAlive = true;
ftp.UseBinary = false;
ftp.UsePassive = false;
ftp.Method = WebRequestMethods.Ftp.UploadFile;
ftp.Timeout = paramaters.FtpTimeout; ;
ftp.CachePolicy = new
System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.BypassCache);
// load file into ftp request
ftp.ContentLength = fileBytes.Length;
// *** THE FOLLOWING LINE IS WHERE THE EXCEPTION IS THROWN *** //
Stream requestStream = ftp.GetRequestStream();
requestStream.Write(fileBytes, 0, fileBytes.Length);
requestStream.Close();
// Make the Ftp Request
FtpWebResponse response = (FtpWebResponse)ftp.GetResponse();
if (response.StatusDescription.Trim() == "226 Transfer complete.")
result = true;
response.Close();
return result;
}
catch (Exception ex)
{
throw new FtpException("Error sending file", ex);
}
}