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 :

MaxReceivedMessageSize encore et toujour


Sujet :

Windows Communication Foundation .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 5
    Par défaut MaxReceivedMessageSize encore et toujour
    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 : 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <?xmlversion="1.0"encoding="utf-8"?>
    <configuration>
     
    <connectionStrings>
    <add name="MyConnectionString" connectionString="Data Source=****;Initial Catalog=****;Persist Security Info=True;User ID=****;Password=****"
    providerName="System.Data.SqlClient" />
    </connectionStrings>
     
    <system.web>
      <compilationdebug="true"targetFramework="4.0" />
    </system.web>
     
    <system.serviceModel>
     
      <behaviors>
    <serviceBehaviors>
        <behavior>
          <!-- Pour éviter la divulgation des informations sur les métadonnées, définissez la valeur ci-dessous sur false et supprimez le point de terminaison des métadonnées ci-dessus avant le déploiement. -->
          <serviceMetadatahttpGetEnabled="true"/>
          <!-- Pour recevoir les détails d'exception des erreurs à des fins de débogage, définissez la valeur ci-dessous sur true. Définissez-la sur false avant le déploiement pour éviter la divulgation des informations d'exception. -->
    <serviceDebugincludeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
     
    <serviceHostingEnvironmentmultipleSiteBindingsEnabled="true" />
     
    </system.serviceModel>
     
    </configuration>
    Pour info mon fichier IService1.cs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [ServiceContract]
    public interface IService1
    {
    [OperationContract]
    List<STUDENTS> GetSTUDENTS();
     
    [OperationContract]
    List<STUDENTS> GetSTUDENTSByFirstName(string firstName);
    }
    


    et Service1.svc.cs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public List<STUDENTS> GetSTUDENTS()
    {
          DataClasses1DataContext dc = new DataClasses1DataContext();
           var result = (from st in dc.STUDENTS orderby st.st_firstname select st);
           return result.ToList();
    }
    public List<STUDENTS> GetSTUDENTSByFirstName(string firstName)
    {
          DataClasses1DataContext dc = new DataClasses1DataContext();
           var result = (from st in dc.STUDENTS where st.st_firstname == firstName orderby st.st_firstname select st);
           return result.ToList();
    }
    L'appel de GetSTUDENTSByFirstName fonctionne car il retourne environ 200 résultat mais GetSTUDENTS()... Pouf, Bug MaxReceivedMessageSize

    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

  2. #2
    Invité
    Invité(e)
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <system.serviceModel>
      <bindings>
        <basicHttpBinding>
          <binding maxReceivedMessageSize="tu mets la valeur que tu veux ici" />
        </basicHttpBinding>
      </bindings>
    </system.serviceModel>

  3. #3
    Invité
    Invité(e)
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <system.serviceModel>
      <bindings>
        <basicHttpBinding>
          <binding maxReceivedMessageSize="tu mets la valeur que tu veux ici" />
        </basicHttpBinding>
      </bindings>
    </system.serviceModel>

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 5
    Par défaut
    Merci te ton aide h2s84 mais ca ne fonctionne toujours pas.
    J'ai mis la valeur à 2147483647

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
     
      <connectionStrings>
        <add name="MyConnectionString" 
             connectionString="Data Source=****;Initial Catalog=****;Persist Security Info=True;User ID=****;Password=****"
             providerName="System.Data.SqlClient" />
      </connectionStrings>
      <system.web>
        <compilation debug="true" targetFramework="4.0" />
      </system.web>
      <system.serviceModel>
     
        <behaviors>
          <serviceBehaviors>
            <behavior>
              <serviceMetadata httpGetEnabled="true"/>
              <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
     
        <bindings>
          <basicHttpBinding>
            <binding maxReceivedMessageSize="2147483647" />
          </basicHttpBinding>
        </bindings>
     
        <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
     
      </system.serviceModel>
     
     <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
      </system.webServer>
     
    </configuration>
    Je pensais que ca me ferrais de la marge mais j'ai toujours le message qui revient.

    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

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bizarre Donc ton message d'erreur n'est pas correct.

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <behaviors>
          <serviceBehaviors>
            <behavior>
               <dataContractSerializer maxItemsInObjectGraph="tu mets la valeur que tu veux ici"/>
              <serviceMetadata httpGetEnabled="true"/>
              <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>

    Si cela ne marche toujours pas alors bonne chance pour la suite

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 5
    Par défaut
    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.


  7. #7
    Membre expérimenté
    Homme Profil pro
    Chef de Projet
    Inscrit en
    Décembre 2012
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Chef de Projet
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Décembre 2012
    Messages : 113
    Par défaut
    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 ?

Discussions similaires

  1. Clic droit encore et toujours
    Par Stéphane Olivier BERNARD dans le forum Access
    Réponses: 3
    Dernier message: 22/05/2006, 00h26
  2. IE/Firefox... encore et toujours...
    Par maniaco_jazz dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 19/02/2006, 23h17
  3. nodes, child et compatibilité... encore et toujours
    Par pmithrandir dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/04/2005, 14h26
  4. stencil buffer, encore et toujours
    Par JAimeBienCoderBourre dans le forum OpenGL
    Réponses: 4
    Dernier message: 08/04/2005, 11h16

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