IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Communication Foundation .NET Discussion :

WCF : Transférer un fichier


Sujet :

Windows Communication Foundation .NET

  1. #1
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut WCF : Transférer un fichier
    [PREFACE]
    J'ai déjà posé cette question sur le forum consacré à WCF mais il a l'air d'être assez peu fréquenté (le dernier message date du 21/6) alors je me permets de la reposer ici-même. Libre à modérateur de modérer comme il convient s'il l'estime nécessaire.
    [/PREFACE]

    Bonjour à tous,

    Ayant décidé de m'intéresser à la communication client-serveur, j'ai découvert WCF. Pour comprendre comment ça marche, j'ai créé une petite application de chat histoire de voir. A priori, ça fonctionne pas trop mal sur le réseau local avec mon collègue ^^ (à la maison, pas moyen par contre, doit sûrement y avoir une config à mettre en place au niveau des firewalls de windaube et du modem-routeur).

    Toujours dans l'idée de creuser un peu plus les possibilités offertes par WCF, je décide d'implémenter une fonction de transfert de fichier dans mon application. A priori, rien de bien compliqué sauf que, lors de l'appel de la méthode de transfert, le client se fait directement déconnecté sans aucune forme d'avertissement ou de renvoi d'erreur.

    Je vous ai mis toute la solution en pièce jointe pour que ceux qui veulent puisse tester.

    Le service WCF est hébergé par une application console. Le client est une application winforms.

    Sur le client, à priori tout se passe bien. Le fichier est transmis au serveur via cette méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        Private Sub AvecToutLeMondeToolStripMenuItem_Click(sender As  Object, e As EventArgs) Handles AvecToutLeMondeToolStripMenuItem.Click
            Try
                Dim ofd As New OpenFileDialog
                ofd.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments
                ofd.Multiselect = False
                ofd.CheckPathExists = True
                ofd.CheckFileExists = True
                If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then
                    chat.SendFileToAll(My.Computer.FileSystem.ReadAllBytes(ofd.FileName), ofd.SafeFileName)
                End If
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
    Et je m'attends à ce que côté serveur (service), la méthode suivante soit exécutée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Public Sub SendFileToAll(file() As Byte, filename As String) Implements IChatWCF.SendFileToAll
            Console.WriteLine(String.Format("{0} envoie le fichier {1}", userNickname, filename))
            Dim ftea As New FileTransferEventArgs
            ftea.File = file
            ftea.FileName = filename
            ftea.UserSource = userNickname
            ftea.UserDestination = Nothing
            Console.WriteLine("raiseevent")
            RaiseEvent FileTransferEvent(Me, ftea)
        End Sub
    N.B. : Notez que j'ai tenté d'ajouter des traces sur la console pour situer le problème mais en fait, cette méthode n'est même pas exécutée...

    Y a-t-il des choses à mettre en place avant de pouvoir transférer des fichiers ?

    J'ai failli oublié !! Ce phénomène se produit apparemment à partir d'une certaine t'aille de fichier. J'ai fait pas mal de tests et un fichier de 63kb est envoyé sans problème mais un fichier de 68kb provoque la déconnexion. La limite se trouve quelque part entre les deux... (64 ??)

    Quelqu'un aurait-il une idée ?
    Kropernic

  2. #2
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Hello,

    Du nouveau pour mon problème. En lisant cet article, j'ai pu transmettre des fichiers plus volumineux (par exemple une photo de plus de 4 mb). J'ai donc, au moyen de l'interface proposée par visual studio, créé une nouvelle configuration pour le type de binding que j'utilise et je l'ai appliquée sur mon endpoint (aussi bien au niveau du serveur que du client).

    Je reçois à présent un nouveau message d'erreur sur lequel je travaille mais j'imagine que ça doit être lié à la taille que j'ai indiquée dans la configuration...

    EDIT : Effectivement, la taille était limitée à 5 mb. Je sais bien que ce n'est pas la méthode idéale pour transmettre un fichier mais au moins maintenant, je sais que ça marche !
    Kropernic

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. WCF : Transférer un fichier
    Par Kropernic dans le forum VB.NET
    Réponses: 1
    Dernier message: 24/07/2014, 12h57
  2. transférer un fichier de manière sécurisé par ftp
    Par jack_1981 dans le forum Développement
    Réponses: 2
    Dernier message: 22/12/2005, 15h15
  3. Réponses: 4
    Dernier message: 19/12/2005, 12h31
  4. Transférer des fichiers avec un câble réseau
    Par denis finch dans le forum Développement
    Réponses: 5
    Dernier message: 08/11/2005, 17h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo