Bonjour,
J'ai une fonction qui liste sur un serveur FTP la liste des fichiers présents.
Jusqu'à présent cela fonctionnait bien mais depuis cette semaine, nous avons des postes clients qui n'arrive plus à lister les fichiers sur le FTP.
Voici la fonction qui liste les fichiers :
Sur certains postes, dès qu'on appel "reader.ReadLine()" voici ce qu'il nous retourne :Code:
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 public static List<String> ListFileFTP(string login, string password, string pathFTP) { List<String> listFichiers = new List<string>(); System.Net.WebRequest ftpRequest = null; System.Net.FtpWebResponse response = null; System.IO.StreamReader reader = null; try { ftpRequest = System.Net.FtpWebRequest.Create(pathFTP + "/"); ftpRequest.Credentials = new System.Net.NetworkCredential(login, password); ftpRequest.Method = System.Net.WebRequestMethods.Ftp.ListDirectory; response = (System.Net.FtpWebResponse)ftpRequest.GetResponse(); reader = new System.IO.StreamReader(response.GetResponseStream()); string line = reader.ReadLine(); if (line != null) { listFichiers.Add(line); } while (line != null) { line = reader.ReadLine(); if (line != null) { listFichiers.Add(line); } } } catch (Exception ex) { throw new ExceptionRegle(String.Format("Il n'est pas possible de se connecter au serveur FTP : {0}. Détail de l'exception : {1}.", pathFTP, ex.Message)); } finally { if (reader != null) { reader.Close(); reader.Dispose(); reader = null; } if (response != null) { response.Close(); response = null; } if (ftpRequest != null) { ftpRequest = null; } } return listFichiers; }
On voit dans cet exemple le fichier .dat que je dois récupérer dans ma liste.Code:
1
2
3
4
5
6 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <HTML><HEAD><TITLE>Directory /Deversement/S1/ at </TITLE></HEAD><BODY><H1>Directory /Deversement/S1/ at</H1> <p><a href="..">Up to higher level directory</a></p <td><a href="S1_23_ADR2_25012013_100517.dat">S1_23_ADR2_25012013_100517.dat</a></td></tr> etc...
Les autres postes récupère bien correctement les fichiers comme par exemple :
Il faut savoir que certains postes clients ont changé de Domaine réseau, mais je ne pense pas que le problème vienne de là.Code:
1
2
3
4
5 S1_23_ADR2_25012013_100517.dat S1_23_ADR2_25012013_100518.dat S1_23_ADR2_25012013_100519.dat etc...
J'ai pensé que sa pouvait venir de l'encodage dans la méthodemais rien n'a changé.Code:reader = new System.IO.StreamReader(response.GetResponseStream());
Auriez vous une idée ?
Merci de votre aide