2011-10-12 1 views
0

J'utilise dans mon projet BITS - Background Intelligent Transfer Service pour envoyer le fichier avec une grande taille. Utiliser SharpBITS.NET en code C#. Je veux télécharger le fichier du serveur au client. Je note maintenant les côtés.bits, sharpBits.net

côté client ------------- ---------------

static void main (String [] args) {

 string local = @"I:\a.mp3"; 

     string destination = "http://192.168.56.128/BitsTest/Home/FileUpload"; 

     string remoteFile = @destination; 
     string localFile = local; 
     if (!string.IsNullOrEmpty(localFile) && System.IO.File.Exists(localFile)) 
     { 
      var bitsManager = new BitsManager(); 
      var job = bitsManager.CreateJob("uploading file", JobType.Upload); 
      job.NotificationFlags = NotificationFlags.JobErrorOccured |  NotificationFlags.JobModified | 
            NotificationFlags.JobTransferred; 

      job.AddFile(remoteFile, localFile); 
      job.Resume(); 

      job.OnJobError += new EventHandler<JobErrorNotificationEventArgs>(job_OnJobError); 

     } 
    } 

Ceci est une application console simple. le local - path le fichier que je veux envoyer, destination - le chemin est le récepteur c'est le serveur distant. Lorsque j'exécute le programme, job.Error prend l'instruction suivante: "La réponse du serveur n'était pas valide Le serveur ne suivait pas le protocole défini Reprise du travail, puis le service BITS (Background Intelligent Transfer Service) réessayait. - BG_E_HTTP_ERROR_200.-2145845048, 0x801900C8 "

Pour le client (récepteur) j'ai le code suivant: C'est Mvs 3 petit projet et I Voir seulement l'action où aller par notre chemin de destination.

public ActionResult FileUpload() 
     { 
      try 
      { 
       HttpPostedFileBase file = Request.Files[0]; 
       file.SaveAs(System.IO.Path.Combine(Server.MapPath("/BitsTest/"), file.FileName)); 
      } 
      catch 
      { } 
      /*System.IO.File.Move(Server.MapPath("/BitsTest/bin/aa.png"), Server.MapPath("/BitsTest/Content/aa.png"));*/ 
} 

Mais l'action FileUpload n'est pas recevie. Je ne sais pas comment je peux recevoir des fichiers dans le côté client. Comme vous pouvez le voir, j'ai utilisé HttpPostedFileBase pour le fichier recive mais cela ne fonctionne pas.

Mon serveur hôte est Windows Server 2008 R2 et j'ai effectué les étapes nécessaires pour BITS. Pour plus d'informations, vous pouvez visiter le site suivant: http://technet.microsoft.com/en-us/library/cc431377.aspx ---- Comment configurer Windows Server 2008 pour les systèmes de site Configuration Manager 2007.

Donc je ne sais pas ce que je peux faire pour recevoir des fichiers dans le serveur hôte. Vous pouvez me dire ce que vous pouvez faire.

Répondre

0

Avec une méthode sans état comme celle utilisée par les applications Web, il n'y a pas de connexion au serveur une fois la réponse terminée. Vous pouvez interroger le serveur du côté client, mais le client n'écoute pas le serveur pour envoyer des bits supplémentaires. Dans «le passé», vous pouviez configurer des contrôles ActiveX, des applets Java, etc. (Silverlight aujourd'hui?) Pour continuer à écouter, mais ce n'est pas un développement de style Web direct.

HTML5 étend vos options si vous souhaitez utiliser l'API websocket. Comme avec toutes les parties de HTML5, vous avez un certain risque d'utiliser ces bits pour l'implémentation car tous les navigateurs n'ont pas encore adopté la "norme" (l'adoption devrait être terminée dans les 10-12 prochaines années: ->).

Questions connexes