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 :

Changer le readerquota via le code


Sujet :

Windows Communication Foundation .NET

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Par défaut Changer le readerquota via le code
    Bonjour à tous,

    Je fais face à un problème assez embettant. Dans une application silverlight, j'instancie un BasicHttpBinding via le code pour pouvoir créer mon point d'acces à mon webservice dynamiquement.

    Or, dans mon cas, je dois modifier le ReaderQuota du BasicHttpBinding pour éviter un crash à cause de données trop lourdes à passer.

    En configurant mon binding dans le web.config, tout passe bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     <basicHttpBinding>
            <binding name="MyBasicHttpBinding"  maxReceivedMessageSize="2147483647" closeTimeout="00:05:00" openTimeout="00:05:00" receiveTimeout="00:05:00" sendTimeout="00:05:00">
              <readerQuotas maxArrayLength="2147483647" maxDepth="2147483647" maxBytesPerRead="2147483647" maxStringContentLength="2147483647"/>
            </binding>
          </basicHttpBinding>
    Mais par le code, je n'ai aucune propriété permettant de changer le readerquotas :/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     Dim binding As New BasicHttpBinding()
            binding.Name = "BindingGestionTech"
            binding.CloseTimeout = New TimeSpan(0, 20, 0)
            binding.OpenTimeout = New TimeSpan(0, 20, 0)
            binding.ReceiveTimeout = New TimeSpan(0, 20, 0)
            binding.SendTimeout = New TimeSpan(0, 20, 0)
            binding.MaxBufferSize = 2147483647
            binding.MaxReceivedMessageSize = 2147483647
    Dans mes recherches, j'ai croisé beaucoup de solutions C# mais rien en VB.Net. Or, toute la solution est VB, je ne peux donc pas me permettre de remettre en C#.

    Une idée ?
    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Normalement avec ce code ça devrait marcher :
    Code VB.Net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    XmlDictionaryReaderQuotas readerQuotas = new XmlDictionaryReaderQuotas()
    readerQuotas.MaxArrayLength = 25 * 1024
    binding.ReaderQuotas = readerQuotas

    Tu utilises quelle version du framework ? Parce que cette propriété si tu utilises .NET Framework Client Profile, elle n'est disponible que si tu utilises la version 4 ou 3.5 SP1 !

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Par défaut
    Salut,

    Non, cela ne fonctionne pas car la propriété ReaderQuotas n'est pas disponible.
    Il faut savoir que je tente de réaliser cette operation dans un projet de type Bibliotheque de classes utilisant le framework Silverlight 4. Je pense que c'est là où ca bloque :/ mais comment faire du coup parce que là j'en aurais vraiment vraiment besoin !

    Merci pour la réponse

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bon après une petite recherche, je viens d'apprendre un truc avec ce lien :
    If you are using Silverlight as your client then reader quotas etc are not available, but it the good news is that it reads the values from the server so it still works..
    Donc apparemment c'est la valeur configurée sur le serveur qui sera pris en compte donc configure ton readerQuotas côté serveur.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Par défaut
    Je viens de faire l'essai apres lecture de ton lien et non, ca ne fait rien de plus :/ toujours le message d'erreur disant que je dois modifier le readerquotas.
    Le pire dans tout ca, c'est que quand, coté client, je le parametre via le web.config, tout fonctionne parfaitement. Mais dès que je cherche à créer dynamiquement la liaison au webservice, vu que je ne peux pas créer le readerquotas par code, il ne passe pas (et du coup, je doute qu'il aille chercher l'information coté serveur :/)

  6. #6
    Invité
    Invité(e)
    Par défaut
    Est-ce qu'on pourrait savoir pourquoi tu veux coûte que coûte passer par la méthode manuelle au lieu du fichier de configuration ?

    Si tu effectues une recherche tu verras bien que tout le monde le fait dans le fichier de configuration du client SL et tout marche. Pour l'instant je ne sais pas pourquoi via le code tu ne peux pas le faire.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Par défaut
    Eh bien tout simplement parce qu'à certains moment j'ai besoin d'aller sur un autre webservice ^^
    En gros, j'ai une appli WPF qui permet d'aller se connecter sur un meme webservice mais déployé sur différents serveurs.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Par défaut
    Pour information, j'ai créé un autre projet, tout simple, à coté et cela fonctionne correctement avec la config coté serveur.
    J'ai trituré le truc dans tous les sens mais impossible de comprendre pourquoi sur mon projet il ne tient pas compte de la config serveur alors qu'ailleurs il le fait :/

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Par défaut
    Solution trouvée... ouf

    Voila pourquoi la configuration coté serveur n'est pas appliquée :

    Dans le web.config coté serveur, on a la balise Service qui possède l'attribut Name.
    Pour moi, l'attribut Name devrait (enfin devait) etre totalement arbitraire...
    Eh bien nom, l'attribut Name DOIT absolument correspondre au nom de l'assembly contenant le service suivi d'un point suivi du nom de la classe formant le SVC.

    Donc si on a un projet de type webservice WCF qui se nomme MonWebService qui contient le fichier MonService.svc, le name de la balise service devra etre MonWebService.MonService !!!!
    Ca fait trois jours que je planche sur ce truc à la noix parce que l'attribut Name n'est PAS arbitraire du tout !!! (et pour moi, ca devait etre arbitraire à partir du moment où on spécifie le contract qui lui aurait du être le lien entre le web.config et la classe meme...)

    Bref, en esperant que cela aide quelqu'un et lui economisera du temps

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par zax-tfh Voir le message
    Eh bien nom, l'attribut Name DOIT absolument correspondre au nom de l'assembly contenant le service suivi d'un point suivi du nom de la classe formant le SVC.
    Ah non ! Une petite erreur ! Il s'agit ici de mettre le type qualifié du service : c'est à dire l'espace de noms + le nom de la classe (qui implémente ton contrat).

    Citation Envoyé par zax-tfh Voir le message
    Ca fait trois jours que je planche sur ce truc à la noix parce que l'attribut Name n'est PAS arbitraire du tout !!! (et pour moi, ca devait etre arbitraire à partir du moment où on spécifie le contract qui lui aurait du être le lien entre le web.config et la classe meme...)
    Non. Un contrat pouvant être implémenté par plusieurs services alors tu dois aider WCF à trouver le bon service à exposer et par conséquant lui fournir le bon type de la classe associée dans l'attribut name.

    P.S. : 3 jours quand même Bravo sinon

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Par défaut
    Lol, oui merci pour ces precisions.

    Par contre je me permet de détérer le sujet car je n'avais fait l'essai qu'en debug jusqu'à maintenant. Or là en le déployant sur un serveur, ca ne passe plus, il me remet la meme erreur alors que le web.config est bien correct (et que tout fonctionne en debug sur ma machine).

    Donc là je suis à la recherche de la différence entre ma machine en debug et le serveur IIS qui fait que pour le premier le readerquota du web.config du webservice est bien pris en compte par le client alors que pour le deuxieme ce n'est pas le cas.

    Si vous avez une idée...

  12. #12
    Invité
    Invité(e)
    Par défaut
    Vérifies bien que tu mets bien à jour l'url (qui doit correspondre à celui lorsqu'il est dans le IIS) du service côté client avant de déployer.

  13. #13
    Invité
    Invité(e)
    Par défaut
    Alors tu t'en es sorti ? Si oui, comment ?

Discussions similaires

  1. log4j, changer de fichier via code
    Par Nalfeim dans le forum Logging
    Réponses: 6
    Dernier message: 03/08/2010, 12h01
  2. [API] Lancer une application externe via un code Java
    Par k o D dans le forum Général Java
    Réponses: 19
    Dernier message: 09/03/2006, 15h12
  3. [Débutant] Changer un lien via du javascript
    Par beegees dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/02/2006, 19h09
  4. Comment dupliquer un enregistrement via le code ?
    Par massol joel dans le forum Access
    Réponses: 2
    Dernier message: 11/11/2005, 19h01
  5. [QuickReport] Changer la direction par le code
    Par cadetill dans le forum Composants VCL
    Réponses: 2
    Dernier message: 11/08/2005, 14h09

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