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] - méthodes et objets Stream


Sujet :

Windows Communication Foundation .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de obitskater
    Profil pro
    Développeur .NET
    Inscrit en
    Février 2008
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2008
    Messages : 163
    Par défaut [WCF] - méthodes et objets Stream
    Bonjour à tous.

    Voici le contexte : j'ai une application 3 couches avec les couche Business et UI reliées via des services WCF. Jusque là logique.

    Je dois, depuis mon appli, pouvoir uploader des fichiers en base de données.
    J'extrais donc le contenu de mon fichier local dans un objet de type stream, que j'envoie via un service dans les couches inférieures qui vont se charger d'enregistrer le contenu de ce flux en base.

    J'ai un objet qui contient les informations du fichier à sauvegarder
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
        [KnownTypeAttribute(typeof(FileStream))]
        public class FileToSave
        {
            #region Constructors
     
            public FileToSave()
            {
            }
     
            #endregion
     
            #region Properties
     
            [DataMember]
            public string Nom { get; set; }
     
            [DataMember]
            public Stream Data { get; set; }
     
            #endregion
        }
    Dans mon Ihm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                FileToSave myFile = new FileToSave();
                myFile.Nom = "toto.txt"
                myFile.Data = new FileStream("C:\toto.txt", FileMode.Open);
     
                ProxyWcfCommun.ServiceClient.SaveFile(myFile);
    Ma méthode de la couche business (appelée par le service WCF)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public static void SaveFile(FileToSave myFile)
    {
          //Ici sera implémenter le traitement pour récupérer à partir du stream le tableau de Byte correspondant pour l'enregistrement en base
    }
    Or le problème est que dans cette dernière méthode, ma propriété myFile.Data semble mise à vide, comme si la serialization du stream avait mal fonctionnée. Dès que j'appelle la méthode read (myFile.Data.Read(...)), je me prends une nullReferenceException. Attention, ce n'est pas mon objet myFile qui est null!

    Ma config WCF :
    Binding : netTcpBinding
    TransferMode : Buffered (j'ai lu qu'il n'y avait pas forcément besoin d'avoir un TranferMode de type Stream*)

    Si vous avez des pistes, je suis preneur merci

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Par défaut
    Salut,

    Conformément à ce lien http://msdn.microsoft.com/en-us/library/ms733742.aspx, ils évoquent de passer l'encodage à MTOM.

    J'espère que ça peut t'aider.

    edit : titillé par ton post j'ai aussi trouvé ceci http://blog.joachim.at/?p=33

  3. #3
    Membre confirmé Avatar de obitskater
    Profil pro
    Développeur .NET
    Inscrit en
    Février 2008
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2008
    Messages : 163
    Par défaut
    Salut cybermaxs,

    merci pour ton lien, mais il semble que la propriété messageEncoding ne soit disponible seuleument pour les binding de type BasicHttpBinding ou WSHttpBinding :

    you can enable on the standard BasicHttpBinding or WSHttpBinding bindings by setting the respective MessageEncoding property to Mtom

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Par défaut
    désolé, ça semblait cohérent.
    As tu aussi changé la taille des messages ?

  5. #5
    Membre confirmé Avatar de obitskater
    Profil pro
    Développeur .NET
    Inscrit en
    Février 2008
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2008
    Messages : 163
    Par défaut
    Qu'entends tu par la taille des messages? Si tu veux parler de la taille des flux de données que je passe, ils peuvents être aléatoire étant donné que l'utilisateur peut à priori uploader n'importe quel fichier.

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Par défaut
    Salut,

    Je voulais juste dire que WCF impose par défaut une limite de 64K max par message ou appel WCF.
    Ton problème se produit il pour les petits comme pour les gros fichiers ?

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

Discussions similaires

  1. Service WCF et méthode des Objets
    Par timlartiste dans le forum Services Web
    Réponses: 5
    Dernier message: 28/06/2011, 15h42
  2. [PHPTAL] gestion des méthodes des Objets
    Par ronio dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 06/03/2006, 14h29
  3. [POO] affectation dynamique d'une méthode à un objet
    Par Delphi-ne dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/02/2006, 21h17
  4. Ajouter un méthode à un objet
    Par norvel dans le forum Access
    Réponses: 2
    Dernier message: 03/10/2005, 16h50
  5. iis, objet stream et upload
    Par bmayer dans le forum ASP
    Réponses: 3
    Dernier message: 07/10/2004, 15h13

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