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 - Adapter le maxReceivedMessageSize en fonction du message!


Sujet :

Windows Communication Foundation .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 109
    Par défaut WCF - Adapter le maxReceivedMessageSize en fonction du message!
    Bonjour à tous,

    Je fais mes premiers pas avec WCF et j'aimerais avoir un petit renseignement.
    Pour résumer j'ai un service du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [OperationContract]
    MemoryStream GetStream();
    Et ce memoryStream peux etre de taille variable.
    Lors de mes tests j'ai eu droit à la petite erreur :
    Le quota de taille maximale autorisée pour les messages entrants (65536) a été dépassé
    J'ai donc augmenté la taille du MaxReceivedMessageSize, et tout est ok!

    Cependant y'a-t-il des risques à configurer une liaison avec des messages max de 10Mo si la plupart de ces derniers n'en font qu'un seul?

    Et si un jour mon appli renvoi un stream de plus de 10Mo? Y-a-t-il une méthode pour anticiper et adapter cette taille de message. Par exemple modifier le maxReceivedMessageSize à l'aide d'une méthode qu'on appellerai avant et qui renvoi la taille du Stream. Je propose ça, car c'est ce que j'ai essayer dans mon code mais sans résultat (et puis ça n'a pas l'air très propre de changer le binding du endpoint comme ca!!!!!!!) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    //class qui implemente IServiceWCF coté serveur
    ServiceWCF proxy = new ServiceWCF("BasicHttpBinding_IServiceWCF");
    long msgSize = proxy.GetStreamSize();
    BasicHttpBinding myBinding = new BasicHttpBinding("BasicHttpBinding_IServiceWCF");
    myBinding.MaxReceivedMessageSize = msgSize;
    proxy.Endpoint.Binding = myBinding;
    MemoryStream theStream = proxy.GetStream();
    Merci d'avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par goddet Voir le message
    Par exemple modifier le maxReceivedMessageSize à l'aide d'une méthode qu'on appellerai avant et qui renvoi la taille du Stream. Je propose ça, car c'est ce que j'ai essayer dans mon code mais sans résultat (et puis ça n'a pas l'air très propre de changer le binding du endpoint comme ca!!!!!!!) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    //class qui implemente IServiceWCF coté serveur
    ServiceWCF proxy = new ServiceWCF("BasicHttpBinding_IServiceWCF");
    long msgSize = proxy.GetStreamSize();
    BasicHttpBinding myBinding = new BasicHttpBinding("BasicHttpBinding_IServiceWCF");
    myBinding.MaxReceivedMessageSize = msgSize;
    proxy.Endpoint.Binding = myBinding;
    MemoryStream theStream = proxy.GetStream();
    Salut,

    Ceci n'est pas de la bonne pratique.

    C'est pour ce genre de problèmes qu'il est toujours conseillé de configurer son service (binding, endpoint, contrat etc) dans le fichier de configuration de l'application. Comme ça un jour si un des paramètres ne suffit pas il suffit d'arrêter l'application et d'augmenter la valeur comme dans le cas de MaxReceivedMessageSize et de redémarrer.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 109
    Par défaut
    Merci pour la réponse. J'utilise bien un fichier de config. J'avais juste testé le changement de config dans le code pour ne pas avoir à stopper l'appli en cas de dépassement de taille pour les messages entrant!

    Donc il n'est vraiment pas possible de changer la taille du MaxReceivedMessage sans arrêter le service?

Discussions similaires

  1. Fonction Copy() - Message d'Erreur permission Denied
    Par clementh dans le forum Langage
    Réponses: 4
    Dernier message: 01/05/2009, 18h25
  2. adapter son site en fonction de la resolution de l'ecran
    Par wrndid dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 16/07/2008, 15h22
  3. fonction pour message d'alerte
    Par Alain_Aebischer dans le forum Général JavaScript
    Réponses: 23
    Dernier message: 10/06/2008, 15h04
  4. Réponses: 4
    Dernier message: 27/06/2007, 13h38
  5. adapter l'entrée en fonction de boutons radio
    Par allowen dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 31/08/2005, 13h51

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