Bonjour à toute la communauté !

J'ai besoin de vous car je suis débutant en C# et je suis en train d'essayer de faire quelque chose que je trouve assez complexe.

Je suis en train de faire un service Windows qui toutes les 5 secondes va voir un fichier Excel sur le FTP, si celui ci est modifié il appelle la méthode "download".
A la fin de cette méthode, je relance le timer.

Mon problème est avec cette fonction "download". Ca fonctionne super bien pendant 4h et ensuite bim, le téléchargement ne fonctionne plus.

Je ne comprend pas du tout pourquoi... Je me demande ci ça ne viendrait pas d'un autre programme sur ordinateur qui me bloquerai (conflit ?) (pourquoi au bout de 3-4H je sais pas), ou peut être OVH qui me bloque...

Je vous joint cette fonction "download".

Pourriez-vous me dire ce qui ne vas pas ? Avez-vous déjà eu ce problème ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
<br>// stop timer              aTimer.Enabled = false;                // On telecharge le fichier excel depuis le FTP             string localPath = @"C:\01Local\01\mon_excel.xlsx";              Uri url = new Uri("ftp://ftp.domaine.com/mon_excel.xlsx");
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 
public static bool RestartDownloadFromServer(string fileName, Uri serverUri, long offset)
        {
            // The serverUri parameter should use the ftp:// scheme.
            // It identifies the server file that is to be downloaded
            // Example: ftp://contoso.com/someFile.txt.
 
            // The fileName parameter identifies the local file.
            //The serverUri parameter identifies the remote file.
            // The offset parameter specifies where in the server file to start reading data.
 
            if (serverUri.Scheme != Uri.UriSchemeFtp)
            {
                string path01 = @"C:\01Local\essais\01\DownloadFailed.txt";
                File.AppendAllLines(path01, new[] { "Le téléchargement du fichier a échoué" });
                return false;
            }
 
            // Get the object used to communicate with the server.
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri);
            request.Credentials = new NetworkCredential("login", "pass");
            request.Method = WebRequestMethods.Ftp.DownloadFile;
 
 
            FtpWebResponse response = null;
            try
            {
                response = (FtpWebResponse)request.GetResponse();
            }
            catch (WebException e)
            {
                string path02 = @"C:\01Local\essais\01\FtpWebRequestFailed.txt";
                File.AppendAllLines(path02, new[] { "Le téléchargement du fichier a échoué, statut : " + e.Status + ", Message : " + e.Message });
                return false;
            }
 
            // Get the data stream from the response.
            Stream responseStream = response.GetResponseStream();
            // Use a StreamReader to simplify reading the response data.
            FileStream writeStream = new FileStream(fileName, 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);
            }
 
            // Cleanup.
            writeStream.Close();
            responseStream.Close();
            response.Close();
 
            string path03 = @"C:\01Local\essais\01\FtpWebRequestSuccessful.txt";
            File.AppendAllLines(path03, new[] { "Download restart - status: {0}" + response.StatusDescription });
 
            return true;
        }
PS : J'ai trouvé cette méthode sur le site suivant :

https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx

Je me suis inspiré du code mais je ne l'ai pas respecté à la lettre, notamment avec l'argument cotentoffset.

Merci d'avance pour votre aide.

A bientôt.