|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Invité de passage
![]() Étudiant Inscription : février 2013 Messages : 5 ![]() |
Bonjour,
Ma question va sembler rébarbative car maintes fois posé sur moult forums mais sur un service WCF des plus basic (coté serveur et généré de base par notre Visual Studio adoré) je n'arrive pas à augmenter la taille du « MaxReceivedMessageSize » dans mon « Web.config ». (dans ma base de donnée j’ai une table ‘STUDENTS’ avec les champs ‘id’, ‘civility’, ‘firstname’ et ‘lastname’ qui contient plus de 31000 enregistrement) Code :
Code :
et Service1.svc.cs Code :
Pour compléter, ce service est du coté serveur pour que mon appli Silverlight y accède via les « Service Reference ». Je ne sais pas si tout cela est la bonne facon de procéder mais je début sur WCF. Merci de votre aide |
||||||
|
|
00
|
|
|
#2 | ||
![]() ![]() |
Il faut que tu étendes ton binding en lui spécifiant la nouvelle valeur pour maxReceivedMessageSize.
Par exemple si tu utilises le binding basicHttpBinding alors ce sera Code :
__________________
Consultant .Net chez SoftFluent Découvrir notre produit CodeFluent Entities Adhérer à l'association Fier d'être développeur ![]() Les FAQs sur les technologies .Net voir ici Les cours et tutos sur les technologies .Net voir ici Les critiques sur les livres parlant des technologies .Net voir ici Pensez à la balise [CODE] Pensez au tag si votre problème est résolu
|
||
|
00
|
|
|
#3 | ||
![]() ![]() |
Il faut que tu étendes ton binding en lui spécifiant la nouvelle valeur pour maxReceivedMessageSize.
Par exemple si tu utilises le binding basicHttpBinding alors ce sera Code xml :
__________________
Consultant .Net chez SoftFluent Découvrir notre produit CodeFluent Entities Adhérer à l'association Fier d'être développeur ![]() Les FAQs sur les technologies .Net voir ici Les cours et tutos sur les technologies .Net voir ici Les critiques sur les livres parlant des technologies .Net voir ici Pensez à la balise [CODE] Pensez au tag si votre problème est résolu
|
||
|
00
|
|
|
#4 | ||
|
Invité de passage
![]() Étudiant Inscription : février 2013 Messages : 5 ![]() |
Merci te ton aide h2s84 mais ca ne fonctionne toujours pas.
J'ai mis la valeur à 2147483647 Code :
Est ce que mon retour dépasse cette valeur ? Comme je l'ai indiqué, pour le moment j'ai 31000 entrée dans cette table et elle va augmenter. Si c'est le cas, est ce que découper ma requete pour me renvoyer tout les étudiants dont le nom commence pas A puis B puis C... serrais une bonne pratique avec le rique qu'un jour le message revienne. Merci |
||
|
|
00
|
|
|
#5 | ||
![]() ![]() |
Bizarre
Il se peut que tu ais dépassé le nombre maximum d'objet dans une collection à sérialiser alors je te propose de modifier cela comme suit dans l’élément behavior Code xml :
Si cela ne marche toujours pas alors bonne chance pour la suite
__________________
Consultant .Net chez SoftFluent Découvrir notre produit CodeFluent Entities Adhérer à l'association Fier d'être développeur ![]() Les FAQs sur les technologies .Net voir ici Les cours et tutos sur les technologies .Net voir ici Les critiques sur les livres parlant des technologies .Net voir ici Pensez à la balise [CODE] Pensez au tag si votre problème est résolu
|
||
|
00
|
|
|
#6 |
|
Invité de passage
![]() Étudiant Inscription : février 2013 Messages : 5 ![]() |
Meci h2s84 mais ca vaux pas ^^
Voici le détail du message d'erreur. Si quelqu'un peut éclairer ma lanterne =) Échec de l'appel du service. Causes possibles : le service est peut être hors ligne ou inaccessible ; la configuration côté client ne correspond pas au proxy ; le proxy existant n'est pas valide. Reportez-vous à la trace de la pile pour plus de détails. Vous pouvez tenter une récupération en démarrant un nouveau proxy, en restaurant la configuration par défaut ou en actualisant le service. Détail de l’erreur : Le quota de taille maximale autorisée pour les messages entrants (65536) a été dépassé. Pour augmenter le quota, utilisez la propriété MaxReceivedMessageSize sur l'élément de la liaison appropriée. Server stack trace: à System.ServiceModel.Channels.HttpInput.ThrowMaxReceivedMessageSizeExceeded() à System.ServiceModel.Channels.HttpInput.GetMessageBuffer() à System.ServiceModel.Channels.HttpInput.ReadBufferedMessage(Stream inputStream) à System.ServiceModel.Channels.HttpInput.ParseIncomingMessage(HttpRequestMessage httpRequestMessage, Exception& requestException) à System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout) à System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout) à System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout) à System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) à System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) à System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) Exception rethrown at [0]: à System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) à System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) à IMABASEService.GetSTUDENTSX() à MABASEServiceClient.GetSTUDENTSX() Inner Exception: Le quota de taille maximale autorisée pour les messages entrants (65536) a été dépassé. Pour augmenter le quota, utilisez la propriété MaxReceivedMessageSize sur l'élément de la liaison appropriée. |
|
|
00
|
|
|
#7 |
|
Membre confirmé
![]() François DORINChef de Projet Inscription : décembre 2012 Messages : 104 ![]() |
Bonjour,
Il y a une chose qui m'étonne. Dans l'exception, il est précisé la taille de MaxReceivedMessageSize, et elle est de 65536. As-tu augmenté cette taille lors de ton dernier test ? |
|
00
|
|
|
#8 |
|
Membre confirmé
![]() François DORINChef de Projet Inscription : décembre 2012 Messages : 104 ![]() |
J'ai peut être eu un tilt en relisant ton message. De quel coté modifies-tu le MaxReceiveMessageSize ? Coté client ou coté serveur ?
Je dirais que c'est du côté du client qu'il faut voir, puisque c'est lui qui reçoit de longs messages |
|
00
|
|
|
#9 | ||||
|
Invité de passage
![]() Étudiant Inscription : février 2013 Messages : 5 ![]() |
Bonjour EItotor,
Ben c’est justement ma question, comme nous en avons discuté avec h2s84. Je dois augmenter la valeur de MaxReceiveMessageSize mais je ne comprends pas où et comment. Je pense bien que c’est dans mon fichier web.config mais malgré les divers exemples que j’ai pu trouver sur des forums ou tuto, ou ce que ma conseillé h2s84, je n’arrive pas à récupérer le résultat de ma requête. D’autant que tout ce service est généré par Visual Studio de la façon la plus basique possible. Visual Studio -> Nouveau Projet -> application de service WCF Ajouter-> Nouvel élément -> Données -> Classe Linq to SQL Explorateur de serveur ->Nouvelle connexion Glissé déplacé ma table dans mon DataClasse1.dbml Dans mon fichier IService1.cs je rajoute Code :
Code :
Sur une table plus petite ou si ma requête Linq sur celle-ci me renvois moins de résultat comme « …where sts.st_firstname == "David" » cela fonctionne. Mais sur l’ensemble de la table j’ai l’erreur. Coté serveur ou client ? Tel quel je ne saurais pas répondre. Au final ce service sera hébergé sur le serveur IIS qui fait aussi serveur de base de données. Mais juste la comme ça je suis totalement en local sur mon PC et sans proxy. Il y a surement quelque chose qui m’échappe mais à force, je ne vois pas où. Encore merci de votre aide et vos suggestions… |
||||
|
|
00
|
|
|
#10 |
|
Membre confirmé
![]() François DORINChef de Projet Inscription : décembre 2012 Messages : 104 ![]() |
Bonjour Usi_Gh0st,
Alors, que tout soit en local sur ta machine ou que ce soit sur des machines différentes, il y a toujours la notion de serveur et la notion de client. Le coté serveur représente le serveur hébergeant ton webservice. Le client représente celui qui consomme ton webservice. Le client peut être un client lourd ou un client léger. Comme le problème survient lorsque tu interroges ton webservice et qu'il renvoit un trop grand nombre de données, c'est au niveau du client qu'il faut préciser le MaxReceiveMessageSize. Dans le cas d'un client lourd, c'est dans le fichier app.config. Dans le cas d'un client léger, dans le web.config. |
|
00
|
|
|
#11 | ||
|
Invité de passage
![]() Étudiant Inscription : février 2013 Messages : 5 ![]() |
Bonjour EITotor,
Nuit courte, pas réveillé… côté serveur ou client je voulais dire que je ne sais pas de quel côté est l’erreur. Comme me l’a indiqué h2s84, j’ai ajouté maxReceivedMessageSize dans mon fichier web.config donc côté serveur. Code :
Ensuite, dans le « client test WCF » dans « Fichier de configuration », clic droit « Modifier avec SvcConfigEditor », dossier « Liaisons » clic sur « BasicHttp Binding… ». Là, j’augmente « MaxBufferSize » et « MaxReceivedMessageSize » à 2147483647 pour configurer le client vue qu’il faut que les paramètres soient les mêmes côté serveur et client. Sauvegarde, recharge de la config, là j’ai plus le message d’erreur, par contre j’attends, j’attends, j’attends… Je ne peux plus déplacer la fenêtre du Client test WCF, ça à l’aire gelé… |
||
|
|
00
|
|
|
#12 | |
|
Membre confirmé
![]() François DORINChef de Projet Inscription : décembre 2012 Messages : 104 ![]() |
Citation:
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com