2009-04-21 9 views
0

C# 2008C# vérifier les fichiers sur le serveur à l'aide du client Web

J'ai utilisé la méthode WebClient DownloadFile.

Je peux télécharger les fichiers que je veux. Cependant, le client a insisté sur la création de différents dossiers qui contiendront le numéro de version. Donc le nom des dossiers serait quelque chose comme ceci: 1.0.1, 1.0.2, 1.0.3, etc.

Donc les fichiers seront contenus dans la dernière version dans ce dossier de cas 1.0.3. Cependant, comment mon client Web peut-il détecter quel est le dernier?

Le client vérifiera cela au démarrage. Sauf si je télécharge réellement tous les dossiers, puis comparer. Je ne suis pas sûr de savoir comment je peux faire ça.

Un grand merci pour tous les conseils,

Répondre

3

Créez une page qui vous donne le numéro de version.

string versionNumber = WebClient.DownloadString(); 
1

This question peut avoir quelques informations utiles pour vous. Veuillez lire ma réponse qui traite de l'énumération des fichiers sur un serveur distant.

2

Allow directory browsing in IIS et de télécharger le dossier racine. Ensuite, vous pouvez trouver le dernier numéro de version et construire l'URL actuelle à télécharger. Voici un exemple (en supposant que vos répertoires seront de la forme Major.Minor.Revision):

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Net; 
using System.Text.RegularExpressions; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     using (var client = new WebClient()) 
     { 
      var directories = client.DownloadString("http://example.com/root"); 
      var latestVersion = GetVersions(directories).Max(); 
      if (latestVersion != null) 
      { 
       // construct url here for latest version 
       client.DownloadFile(...); 
      } 
     } 
    } 

    static IEnumerable<Version> GetVersions(string directories) 
    { 
     var regex = new Regex(@"<a href=""[^""]*/([0-9]+\.[0-9]+\.[0-9])+/"">", 
      RegexOptions.IgnoreCase); 

     foreach (Match match in regex.Matches(directories)) 
     { 
      var href = match.Groups[1].Value; 
      yield return new Version(href); 
     } 
     yield break; 
    } 
} 
+0

Bonjour, Merci pour le code source. Je suppose que je pourrais télécharger le répertoire entier. Cependant, il pourrait être coûteux que chacun puisse grandir pour devenir grand et j'en ai beaucoup. Ensuite, cela pourrait prendre trop de temps à télécharger. Je sautais il y aurait un moyen de trier les dossiers sur le serveur distant. Plutôt que de télécharger le répertoire entier. – ant2009

Questions connexes