maxReceivedMessageSize pas de fixation 413: Entité de Demande Trop Grande
Mon appel à mon service web WCF est un échec avec System.Net.WebException: The request failed with HTTP status 413: Request Entity Too Large.
Vérification de la Fiddler, je vois que je suis d'envoi:
Content-Length: 149839
Qui est plus 65KB.
Permettant WCF suivi sur le serveur, je vois:
Système.ServiceModel.ProtocolException: La taille maximale de message quota
pour les messages entrants (65536) a été dépassé. Pour augmenter la
quota, utilisez le MaxReceivedMessageSize de propriété sur le
élément de liaison.
L'ajout de cette propriété n'a pas de résoudre le problème.
J'ai essayé avec juste cette propriété, et (plus tard) avec divers autres que les messages que l'ont suggéré. Voici ce que j'ai actuellement (sur le serveur):
<basicHttpBinding>
<binding name="PricerServiceSoap"
closeTimeout="00:10:00" openTimeout="00:10:00"
receiveTimeout="00:10:00" sendTimeout="00:10:00"
maxBufferSize="2147483647"
maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
Mon seul point de terminaison (sous <client>
) est:
<endpoint address="/NetPricingService/Service.asmx"
binding="basicHttpBinding" bindingConfiguration="PricerServiceSoap"
contract="Pricing.PricerService.PricerServiceSoap"
name="PricerServiceSoap" />
J'ai également ajouté:
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
sous <behavior>
.
J'ai même courir (pour IIS 7):
%windir%\system32\inetsrv\appcmd set config "WebServicesDev/PricingService"
-section:requestFiltering -requestLimits.maxAllowedContentLength:104857600
-commitpath:apphost
Rien ne fait aucune différence.
Un hic, c'est que c'est un service WCF est destiné à remplacer une ancienne ASMX service. Le service squelette a été générée avec svcutil à partir de WSDL existant. Je ne peux pas changer les configurations du client (et les clients en plusieurs langues). Mon client de test du projet importé le service à Ajouter une Référence Web (sous Add Service Reference /Advanced
), donc je n'ai aucune configuration WCF. Toutefois, le client de test fonctionne si je point à l'ancienne ASMX service.
Comment puis-je réparer ou diagnostiquer cette?
Informations supplémentaires
Si j'utilise le Service Microsoft l'Éditeur de Configuration pour générer le fichier de configuration (paramètre maxReceivedMessageSize et maxBufferSize), il fonctionne. Le problème est que le point de terminaison est ensuite spécifiée en vertu de l' <service>
, et il ne me permet pas de spécifier la /NetPricingService/Service.asmx adresse relative. Si je modifier les liaisons dans le svcutil généré config (où le point de terminaison est sous <client>
), il ne fonctionne pas avec de grandes demandes.
Vous devez vous connecter pour publier un commentaire.
La réponse a été de me regarder en face.
Le fichier de configuration généré par svcutil était pour le client. Je l'utilise sur le serveur.
J'étais édition les liaisons pour les paramètres spécifiés sous
<client>
, qui a fait absolument aucune différence pour le service.L'ajout d'un bon
<service>
d'extrémité et le réglage de la maxReceivedMessageSize et maxBufferSize sur sa liaison résolu le problème.<services>
section est "pas nécessaire" n'a pas été à l'aide de mon httpBinding .. en ajoutant le service de façon explicite de la liaison fixe le problème.J'ai eu un problème similaire.
Pour moi, le problème était que mon point de terminaison n'a pas explicitement le nom de la liaison à l'aide
bindingConfiguration
et donc doit avoir été à l'aide de certains de défaut quelque part.J'ai eu:
et de mon point de terminaison définis comme:
Cela a fonctionné une fois, j'ai changé le point de terminaison:
essayé des choses à partir de 10 différents blogs et ma collègue de travail compris.
nous avons dû ajouter un basicHttpsBinding section à l'intérieur en plus de la basicHttpBinding section. Nous avons un webapi service de l'appel de la wcf. la webapi méthode a été la capture de l'entité trop grande erreur lorsqu'il a appelé le service wcf méthode. Ce changement a été appliqué dans le web.fichier de configuration du service wcf.
Ajouter ce le résoudre pour moi: