En essayant de transférer des fichiers vers et ftp Server, mais quand j'exécute la méthode, il télécharge seulement 2 fichiers, puis stalle. Il tombe en panne sur cette ligneTéléchargement de fichiers sur le serveur FTP
Stream uploadStream = reqFTP.GetRequestStream();
Quand je tire cette ligne les 2 premières fois, le programme vérifie mon certificat et se poursuit ensuite, mais la troisième fois il cale et ne passe vérifier mes certificats.
ici est le code complet:
public void UploadLocalFiles(string folderName)
{
try
{
string localPath = @"\\localFolder\" + folderName;
string[] files = Directory.GetFiles(localPath);
string path;
foreach (string filepath in files)
{
string fileName = Path.GetFileName(filepath);
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://serverIP/inbox/"+fileName));
reqFTP.UsePassive = true;
reqFTP.UseBinary = true;
reqFTP.Credentials = new NetworkCredential("username", "password");
reqFTP.EnableSsl = true;
ServicePointManager.ServerCertificateValidationCallback = Certificate;
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
FileInfo fileInfo = new FileInfo(localPath [email protected]"\"+ fileName);
FileStream fileStream = fileInfo.OpenRead();
int bufferLength = 2048;
byte[] buffer = new byte[bufferLength];
Stream uploadStream = reqFTP.GetRequestStream();
int contentLength = fileStream.Read(buffer, 0, bufferLength);
while (contentLength != 0)
{
uploadStream.Write(buffer, 0, bufferLength);
contentLength = fileStream.Read(buffer, 0, bufferLength);
}
}
}
catch (Exception e)
{
Console.WriteLine("Error in GetLocalFileList method!!!!!" + e.Message);
}
}
Comme je Saied, quand je tends le code uloadStream vérifie mes certificats, voici ma méthode de certificat
public bool Certificate(Object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors errors)
{
{ return cert.Issuer == "myCertificate"; }
}
Y at-il un moyen de seulement se connecter au serveur ftp une fois, et faire le certificat une fois et tenir la session ?? cuz droite chaque fois que je veux télécharger ou télécharger un fichier je me connecte et vérifie le certificat pour chaque fichier ..
qui est probablement pas la cause de votre problème, mais vous devez toujours cours d'eau à proximité après utilisation (dans un bloc finally peut-être?): UploadStream.Close () – slawekwin