I just tried your code (slightly changed to work with my ftp):
string file = @"0eeeab9f-0587-461b-b966-f12c033e704a.thumb.jpg";
string strConnect = @"ftp://[MyUsername]:[MyPassword]@ftp.Images.[MyDomain].com/Images/" + file;
FtpWebRequest ftp;
ftp = (FtpWebRequest)FtpWebRequest.Create(strConnect);
ftp.KeepAlive = false;
ftp.Method = WebRequestMethods.Ftp.DownloadFile;
ftp.UseBinary = true;
ftp.Proxy = null;
ftp.UsePassive = false;
FtpWebResponse ftpR = (FtpWebResponse)ftp.GetResponse();
Stream responseStream = ftpR.GetResponseStream();
FileStream writeStream = new FileStream(".\\" + file, FileMode.Create);
int Length = 2048;
Byte[] buffer = new Byte[Length];
int bytesRead = responseStream.Read(buffer, 0, Length);
while (bytesRead > 0)
{
writeStream.Write(buffer, 0, bytesRead);
bytesRead = responseStream.Read(buffer, 0, Length);
}
(The site specific stuff is redacted and replaced with [...])
It works fine regardless of whether the file exists in the debug folder or not.
So what am I doing that you aren't, or vice versa?