La connexion sous-jacente a été fermée: Le serveur a commis une violation de protocole. FTP

J'étais à télécharger mon fichier à l'aide du code ci-dessous,il fonctionne très bien mais quelques fois, il met cette erreur"La connexion sous-jacente a été fermée: Le serveur a commis une violation de protocole" et la fin du processus ,quand je le lance à nouveau télécharger des fichiers sans aucun problème.

Une chose que j'ai remarqué,si j'exécute ce processus à télécharger plusieurs fichiers puis-je obtenir cette erreur quelque temps,si je fais de moins de 5 fichiers puis il fonctionne très bien,aucune idée d'où et ce que je dois regarder dans.

J'ai été searchin google n'a rien trouvé la solution solide pour cette,même un de la msdn blog en disant ses un bug dans FTPwebrequest, mais pas sûr.

Environnement : C# 4.0, Serveur FTP IIS.

Merci d'Avance

                FileInfo fileInf = new FileInfo(filename);
FtpWebRequest reqFTP;
//Create FtpWebRequest object from the Uri provided
reqFTP = (FtpWebRequest)FtpWebRequest.Create
(new Uri(path + fileInf.Name));
//Provide the WebPermission Credintials
reqFTP.Credentials = new NetworkCredential(user, pwd);
//By default KeepAlive is true, where the control connection
//is not closed after a command is executed.
reqFTP.KeepAlive = false;
//Specify the command to be executed.
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
//Specify the data transfer type.
reqFTP.UseBinary = true;
reqFTP.Timeout = -1;
reqFTP.UsePassive = true;
//Notify the server about the size of the uploaded file
reqFTP.ContentLength = fileInf.Length;
//The buffer size is set to 2kb
int buffLength = 4096;
byte[] buff = new byte[buffLength];
int contentLen;
//Opens a file stream (System.IO.FileStream) to read the file
//to be uploaded
FileStream fs = fileInf.OpenRead();
try
{
//Stream to which the file to be upload is written
Stream strm = reqFTP.GetRequestStream();
//Read from the file stream 2kb at a time
contentLen = fs.Read(buff, 0, buffLength);
//Till Stream content ends
while (contentLen != 0)
{
//Write Content from the file stream to the FTP Upload
//Stream
strm.Write(buff, 0, contentLen);
contentLen = fs.Read(buff, 0, buffLength);
}
//Close the file stream and the Request Stream
strm.Close();
fs.Close();
}

Réponse

reqFTP.KeepAlive = false; "True" pour se débarrasser de l'erreur dans mon cas.

OriginalL'auteur Usher | 2012-03-22