2014-09-09 2 views
0

je devenais exception tout en faisant un appel du mon service WCF plus demande plus grande longueur de contenu d'objet XML 65708, où il travaille sans aucun problème avec la longueur du contenu du fichier XML demande moins de ce .service WCF défaut - HTTP/1.1 400 Bad Request

Ceci est le service que nous sommes exposés à des clients externes et j'ai utilisé SoapUI pour déboguer le service et j'obtiens l'exception HTTP/1.1 400 Bad Request [\ r] [\ n] sans même atteindre le point de débogage. J'ai cherché sur le Web et appliqué les valeurs de configuration fournies, mais aucune d'entre elles m'a aidé à résoudre le problème.

Après tous les changements de configuration, mon fichier web.config est ressemble à ceci (seulement une partie de liaison).

<bindings> 
     <basicHttpBinding> 
     <binding name="GDASHttp" closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Mtom" textEncoding="utf-8" transferMode="Streamed" useDefaultWebProxy="true"> 
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/> 
      <security mode="TransportCredentialOnly"> 
      <transport clientCredentialType="Windows"/> 
      </security> 
     </binding> 
</basicHttpBinding> 

Je n'ai pas changé les paramètres dans le fichier client que je peux obtenir l'exception de SoapUI et est question liée seulement à la configuration du serveur. Je comprends le problème avec certains paramètres accepte en fonction de la taille du fichier, mais je ne sais pas quelles sont les valeurs maximales que nous pouvons fournir dans les paramètres ci-dessus.

I modifié les paramètres IIS selon certains de Google conseille sur le serveur, ce qui est mon fichier applicationhost.config changé.

<location path="Default Web Site/GDAS.FY15R2.3.1/Trusted" overrideMode="Allow"> 
     <system.webServer> 
      <handlers accessPolicy="Read, Execute" /> 
      <security> 
       <ipSecurity> 
        <add ipAddress="127.0.0.1" subnetMask="255.255.255.255" allowed="true" /> 
       </ipSecurity> 
         <requestFiltering> 
         <requestLimits maxAllowedContentLength="40000000" /> 
         </requestFiltering> 
      </security> 
      <serverRuntime uploadReadAheadSize="2147483647" /> 
     </system.webServer> 
    </location> 
+0

Il convient de noter qu'un code d'état HTTP dans les 400s (à savoir 400 Bad Request) points à un problème provenant du côté client, et non pas du côté du serveur. Les problèmes de serveur génèrent généralement des codes d'état dans les 500s. – rownage

Répondre

0

C'est la valeur que vous utilisez: 2147483647

Mais pour WCF vous devez configurer que le client et le serveur. Vous ne pouvez pas simplement changer la liaison serveur, car les deux liaisons sont en fait des mains tremblantes, donc la valeur MAX doit correspondre dans les deux configurations.

je pourrais me tourner sur le traçage et voir exactement ce qui se passe.

+0

Je ne suis pas un expert SoapUI, mais l'envoi de messages à partir SoapUI il y a probablement une longueur configurable. Si votre message sortant est trop grand, je pense que vous auriez cette erreur. Vous pouvez également utiliser Fiddler pour la requête elle-même et voir la taille réelle de la requête. Vous pourriez être plus grand que la limite que vous configurez. Si tel est le cas, vous devez diviser votre résultat dans plusieurs messages. – GCooper

+0

Egalement avec une erreur 400, vous ne parvenez même pas à configurer correctement le point de terminaison de votre serveur. WCFStorm peut aider à diagnostiquer les erreurs WCF. Je réexaminerais l'ensemble de votre configuration de serveur, puis utiliser l'outil pour générer un nouveau client basé sur cela et ensuite le frapper avec SoapUI, ou tempête WCF. – GCooper