2010-09-08 2 views
0

J'essaie de faire une liste de répertoires à distance d'un serveur Web SMB.Liste de répertoire SMB avec C#

Ma méthode ne fonctionne cependant pas. L'appel à DirectoryInfo() se plaint que je ne peux pas lui donner une chaîne dans un format URi.

C'est ce que je suis venu avec:

string smbDirectory = @"\\SERVER\MYSHARE"; 
Uri requestURI = new Uri(smbDirectory); 
List<FileInfo> files = this.listAllFilesInWebDirectory(requestURI); 

List<FileInfo> listAllFilesInWebDirectory(Uri smbDirectory) 
{ 
    string filePattern = "*"; 
    List<FileInfo> returnable = null; 
    DirectoryInfo directory = new DirectoryInfo(smbDirectory.AbsoluteUri); 

    if (directory.Exists == true) 
    { 
     FileInfo[] files = directory.GetFiles(filePattern); 
     returnable = new List<FileInfo>(files); 
    } 
    return returnable; 
} 

je continue à avoir une exception quand je l'appelle directory.GetFiles(filePattern).

Répondre

0

Me semble le DirectoryInfo class accepte uniquement les chemins de fichiers locaux et UNC, pas comme URL http: // ...

+0

Bon, ça a du sens ... :) Désolé, je n'ai rien de plus utile à offrir! – ewall

0

Comme l'a dit ewall, vous ne pouvez pas utiliser pour des uri. Pour cela, débarrassez-vous de l'Uri et passez plutôt la chaîne smbDirectory à votre fonction listallfiles.

Mais étant donné l'historique d'édition de cette question, cela ne résout probablement pas le vrai problème. Si vous souhaitez énumérer une structure de répertoires d'un serveur Web, vous devrez alors implémenter quelque chose sur le serveur Web lui-même pour le prendre en charge. Pour les serveurs MS, la méthode "facile" est d'installer webdav et de tirer parti de son API pour faire ce que vous voulez. Cependant, vous pouvez tout aussi bien implémenter votre propre service web sur le serveur et l'interroger ainsi.

Un autre itinéraire consiste à configurer le serveur Web pour permettre la navigation dans les répertoires. Assurez-vous que vous n'avez pas de jeu de documents par défaut. Une fois configuré, vous pouvez utiliser la classe standard HttpRequest pour effectuer des appels http sur le serveur et analyser les résultats.

Une troisième voie consisterait à installer un serveur FTP et à exécuter vos commandes via FTP.


Le point est que la classe DirectoryInfo ne fonctionnera pas pour ce que vous voulez.


Et je ne suis pas convaincu que tout de ce qui précède est vraiment ce que vous voulez soit donné quelques-unes de vos autres questions concernant silverlight et l'accès aux fichiers. Peut-être pourriez-vous indiquer exactement ce que vous voulez que votre application fasse et quel problème vous tentez de résoudre. Il y a beaucoup de gens ici qui peuvent vous guider sur le bon chemin pour ainsi dire.