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

C# Discussion :

(413) Request Entity Too Large. discussion entre Service


Sujet :

C#

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juin 2010
    Messages : 210
    Points : 243
    Points
    243
    Par défaut (413) Request Entity Too Large. discussion entre Service
    Bonjour,

    J'ai un problème pour l'envoie de fichier entre mes services.

    J'ai un service web et deux service windows avec WCF intégrés.
    J'ai reussi à faire communiquer les trois en faisant de simple appel de méthode mais maintenant que je veux leur faire passer des fichiers cela se gate...

    ServiceWindowsWCF1 --> Service WEB --> ServiceWindowsWCF2

    J'ai donc l'erreur suivante :

    Le serveur distant a renvoyé une réponse inattendue*: (413) Request Entity Too Large.

    Après quelque recherche j'ai vu qu'il fallait que j'augmente la taille que le service peut recevoir. Chose que j'ai faite, mais le problème est toujours le même.

    l'erreur se produit quand je veux envoyer le fichier du Service Web au services 2.

    Le web config du service Web.
    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
    39
    40
    41
    42
    43
    44
    45
    <?xml version="1.0"?>
    <configuration>
      <system.web>
        <compilation debug="true" targetFramework="4.0">
          <assemblies>
            <add assembly="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
          </assemblies>
        </compilation>
        <httpRuntime maxRequestLength="109200" executionTimeout="3600"/>
      </system.web>
      <system.serviceModel>
        <bindings>
          <wsHttpBinding>
            <binding name="WSHttpBinding_IGexsiService" maxReceivedMessageSize="1000000"/>
            <binding name="WSHttpBinding_ISedentaireService" maxReceivedMessageSize="1000000"/>
          </wsHttpBinding>
        </bindings>
        <client>
          <endpoint address="http://localhost:8000/ServiceModelSamples/service" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IGexsiService" contract="GexsiService.IGexsiService" name="WSHttpBinding_IGexsiService">
            <identity>
              <servicePrincipalName value="host/DEV4-PC"/>
            </identity>
          </endpoint>
          <endpoint address="http://localhost:8001/ServiceModelSamples/service" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_ISedentaireService" contract="SedentaireService.ISedentaireService" name="WSHttpBinding_ISedentaireService">
            <identity>
              <servicePrincipalName value="host/DEV4-PC"/>
            </identity>
          </endpoint>
        </client>
        <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 -->
              <serviceMetadata httpGetEnabled="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 -->
              <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
        <serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
      </system.serviceModel>
      <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
      </system.webServer>
    </configuration>
    L'app config du serviceWindowsWCF2

    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>
        <system.serviceModel>
            <bindings>
                <basicHttpBinding>
                    <binding name="BasicHttpBinding_IService1" maxReceivedMessageSize="4194304" />
                </basicHttpBinding>
            </bindings>
            <client>
                <endpoint address="http://localhost:61814/WebService/Service.svc"
                    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService1"
                    contract="ServiceWebSedentaire.IService" name="BasicHttpBinding_IService1" />
            </client>
            <services>
                <!-- This section is optional with the new configuration model
               introduced in .NET Framework 4. -->
                <service name="SedentaireService.FonctionService" behaviorConfiguration="SedentaireServiceBehavior">
                    <host>
                        <baseAddresses>
                            <add baseAddress="http://localhost:8001/ServiceModelSamples/service"/>
                        </baseAddresses>
                    </host>
                    <!-- this endpoint is exposed at the base address provided by host: http://localhost:8001/ServiceModelSamples/service  -->
                    <endpoint address="" binding="wsHttpBinding" contract="SedentaireService.ISedentaireService" />
                    <!-- the mex endpoint is exposed at http://localhost:8001/ServiceModelSamples/service/mex -->
                    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />            
                </service>
            </services>
            <behaviors>
                <serviceBehaviors>
                    <behavior name="SedentaireServiceBehavior">
                        <serviceMetadata httpGetEnabled="true"/>
                        <serviceDebug includeExceptionDetailInFaults="False"/>
                    </behavior>
                </serviceBehaviors>
            </behaviors>
        </system.serviceModel>
    </configuration>
    Si quelqu'un voit quelque chose qui ne lui parait pas normal ou a des remarques à me faire, je lui en serait reconnaissant.

    P.S : tout se fait en local sur la même machine pour le moment.

    Merci.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2003
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 274
    Points : 372
    Points
    372
    Par défaut
    Salut, comme je te l'avais mentionne dans un psot precedent, en effet il faut augmenter la taille du cote client et du cote serveur.
    Cela veut dire pour tes 3 web services tu dois augmenter la taille mais egalement dans ton application cliente qui envoie le fichier -> 4 modifications.

    Si c'est ton premier web service qui se charge de recuperer un fichier a un endroit donne et puis qui le balance alors tu n'as que les 3 web services a modifier.

    De plus, je sais que tu peux augmenter la taille directement a la limite maximale, pour cela recherche sur le web la limite max pour le S'il le faut je dois avoir un exemple chez moi donc va falloir attendre ce soir pour que je te donne les valeurs max et aussi ajouter quelques arguments comme par exemple la taille du buffer.

    Un exemple de ce que l'on trouve sur le web mais que l'on peut modifier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <bindings>
          <basicHttpBinding>
            <binding name="MessageSizeBasic" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
              <readerQuotas maxDepth="32" maxStringContentLength="2147483647"
                maxArrayLength="16348" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
            </binding>
          </basicHttpBinding>
          <webHttpBinding>
            <binding name="MessageSizeWeb" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" />
          </webHttpBinding>
        </bindings>
    La taille limite sur le web:
    MaxReceivedMessageSize and MaxBufferSize must same value and MaxBufferSize is Int32
    Vous avez la réponse à votre question ? Mettez votre sujet en

    Une personne vous a correctement aidé ? Cliquez sur le

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juin 2010
    Messages : 210
    Points : 243
    Points
    243
    Par défaut
    Merci de ta réponse.

    Nous sommes bien dans le cas ou c'est mon premier service qui crée le fichier et le balance.

    J'ai modifié les 3 config.
    Le problème est que dans mon webconfig du service web la balise du bindig est wshttpbinding et non webhttpbinding et elle n'accepte pas maxBufferSize.

    J'ai bien essayé de lui imposer une balise webhttpbinding mais il me recrée tout seul la balise wshttpbinding.. Et quand je parviens à lui mettre en commentaire j'ai visiblement des problèmes de déclaration (pourtant je lui associe la bonne bindingconfiguration).

    Je m'y prend surement mal..

    Je ne sais pas si j'ai été très clair.

    Merci

  4. #4
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2003
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 274
    Points : 372
    Points
    372
    Par défaut
    C'est normal car c'est le protocol que tu utilises qui permet certaines balises ou non et notamment dans ton cas c'est wsh.

    Essayes un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <bindings>
      <wsHttpBinding>
        <binding name="Binding1" maxReceivedMessageSize="6000000">
          <readerQuotas maxArrayLength="2000000000" />
        </binding>
      </wsHttpBinding>
    </bindings>
    Vous avez la réponse à votre question ? Mettez votre sujet en

    Une personne vous a correctement aidé ? Cliquez sur le

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juin 2010
    Messages : 210
    Points : 243
    Points
    243
    Par défaut
    Salut,

    En fait les paramètres étaient bien les bons et placé au bon endroit.
    Le problème est que mon byte[] d'un fichier.txt de36ko était visiblement lourd car avec maxReceivedMessageSize="2147483647" cela ne passait pas.

    J'ai donc fait le test avec un fichier de 1ko et sa fonctionne.

    Je vais me renseigner sur les Stream. Visiblement, et il me semble que tu m'en avais parlé, c'est une bonne chose pour ce que je veux faire.

    Je te mets un Plus pour ton soutien sur le sujet. Et si tu as des idées ou des pistes concernant le transfert à l'aide de Stream, je suis preneur ^^

    En te remerciant de t’être penché sur mon cas.
    Bonne journée à toi.

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

Discussions similaires

  1. [WCF] 413 Request entity too large
    Par Cyrilange dans le forum Services Web
    Réponses: 1
    Dernier message: 02/01/2015, 09h20
  2. HTTP 413 Request Entity Too Large
    Par leame dans le forum Langage
    Réponses: 3
    Dernier message: 09/04/2013, 10h48
  3. Jouer un son wav: Requested buffer too large.
    Par Benduroy dans le forum Général Java
    Réponses: 1
    Dernier message: 01/12/2011, 14h54
  4. Régler le problème de l'erreur 414 Request-URI too large
    Par leaderchips dans le forum Apache
    Réponses: 3
    Dernier message: 24/06/2011, 16h23
  5. Request-URI Too Large
    Par riete dans le forum Langage
    Réponses: 2
    Dernier message: 28/02/2008, 10h26

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