I am getting a lot of different issues in this function :
public static bool UploadToFTP(string strFileName, string strFolderName)
{
bool isUploaded = false;
string strFilename = string.Empty;
string strFtpURI = string.Empty;
string strFtpUserId = string.Empty;
string strFtpPassword = string.Empty;
byte[] buffer = null;
FileInfo oFileInfo = null;
FileStream oFileStream = null;
FtpWebRequest oFtpWebRequest = null;
try
{
strFilename = strFileName;
oFileInfo = new FileInfo(strFilename);
strFtpURI = Constants.FtpUri;
strFtpUserId = Constants.FtpUserID;
strFtpPassword = Constants.FtpPassword;
oFtpWebRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(strFtpURI + "/" + strFolderName + "/" + oFileInfo.Name));
oFtpWebRequest.Credentials = new NetworkCredential(strFtpUserId, strFtpPassword);
oFtpWebRequest.Proxy = null;
oFtpWebRequest.KeepAlive = false;
oFtpWebRequest.Method = WebRequestMethods.Ftp.UploadFile;
oFtpWebRequest.UseBinary = true;
oFtpWebRequest.ContentLength = oFileInfo.Length;
int iBufferLength = 2084;
buffer = new byte[iBufferLength];
int iContentLength = 0;
oFileStream = oFileInfo.OpenRead();
try
{
iContentLength = oFileStream.Read(buffer, 0, iBufferLength);
using (Stream oStream = oFtpWebRequest.GetRequestStream())
{
while (iContentLength != 0)
{
oStream.Write(buffer, 0, iContentLength);
iContentLength = oFileStream.Read(buffer, 0, iBufferLength);
}
isUploaded = true;
FtpUpload.TotalKBFilesUploaded = FtpUpload.TotalKBFilesUploaded + (int)(oFileInfo.Length / 1000);
}
}
catch (Exception ex)
{
}
finally
{
if (oFtpWebRequest != null)
{
oFtpWebRequest.Abort();
oFtpWebRequest = null;
}
if (buffer != null)
{
buffer = null;
}
if (oFileStream != null)
{
oFileStream.Close();
oFileStream.Dispose();
}
}
}
catch (Exception ex)
{
}
finally
{
oFileInfo = null;
}
return isUploaded;
}
This is uploading 1000s of images to FTP, and this methos is called in multi threaded way.
Different errors are :
=======================================================
Message:The operation has timed out
Error Trace: at System.Net.FtpWebRequest.CheckError() at System.Net.FtpWebRequest.GetRequestStream()
=======================================================
Error Message:Unable to connect to the remote server
Error Trace: at System.Net.FtpWebRequest.CheckError() at System.Net.FtpWebRequest.GetRequestStream()
=======================================================
Error Message:The underlying connection was closed: An unexpected error occurred on a receive.
Error Trace: at System.Net.FtpWebRequest.CheckError() at System.Net.FtpWebRequest.SyncRequestCallback(Object obj) at System.Net.CommandStream.Abort(Exception e) at System.Net.FtpWebRequest.FinishRequestStage(RequestStage stage) at System.Net.FtpWebRequest.GetRequestStream()
=======================================================
Error Message:Unable to write data to the transport connection: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
Error Trace: at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size) at System.Net.FtpDataStream.Write(Byte[] buffer, Int32 offset, Int32 size) =======================================================
These are few errors coming from the same method which I retrieved from LOG file.
Any idea what could be causing this? OR I need to give some more detail?
The following exception is encountered when a timeout is reached :
Error Message:The underlying connection was closed: An unexpected error occurred on a receive.
As explained in the msdn documentation the default value of the timeout is infinite but the msdn documentation contains a mistake: http://msdn.microsoft.com/fr-fr/library/vstudio/system.net.ftpwebrequest.timeout(v=vs.80).aspx
In fact, the default value is 100000 ms (1 min and 40 sec) so you can declare the value Timeout to infinite with : oFtpWebRequest.Timeout = -1;
http://www.sidesofmarch.com/index.php/archive/2012/04/06/damn-the-documentation-ftpwebrequest-timeout-default-value-is-not-infinite/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With