Il mio invito al mio servizio Web WCF non riesce con System.Net.WebException: The request failed with HTTP status 413: Request Entity Too Large.
MaxReceivedMessageSize non fissa il 413: Entità richiesta troppo grande
Controllo Fiddler, vedo che sto inviando:
Content-Length: 149839
Che è oltre 65 KB.
Attivazione WCF analisi sul server, vedo:
System.ServiceModel.ProtocolException: quota delle dimensioni Il messaggio massima per i messaggi in entrata (65536) è stato superato. Per aumentare la quota , utilizzare la proprietà MaxReceivedMessageSize sull'elemento di collegamento appropriato.
L'aggiunta di questa proprietà non risolve il problema.
Ho provato solo con quella proprietà e (più tardi) con vari altri che i post hanno suggerito. Ecco quello che ho attualmente (sul server):
<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>
Il mio unico punto finale (sotto <client>
) è:
<endpoint address="/NetPricingService/Service.asmx"
binding="basicHttpBinding" bindingConfiguration="PricerServiceSoap"
contract="Pricing.PricerService.PricerServiceSoap"
name="PricerServiceSoap" />
Ho anche aggiunto:
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
sotto <behavior>
.
ho anche eseguito (per IIS 7):
%windir%\system32\inetsrv\appcmd set config "WebServicesDev/PricingService"
-section:requestFiltering -requestLimits.maxAllowedContentLength:104857600
-commitpath:apphost
Niente fa alcuna differenza.
Un problema è che si tratta di un servizio WCF destinato a sostituire un servizio ASMX precedente. Lo scheletro del servizio è stato generato con svcutil dal WSDL esistente. Non riesco a modificare le configurazioni del client (e i client sono in più lingue). Il progetto del mio client di prova ha importato il servizio con Aggiungi riferimento Web (sotto Add Service Reference/Advanced
), quindi non ho configurazione WCF. Tuttavia, il client di test funziona se lo indico al servizio ASMX precedente.
Come posso risolvere o diagnosticare questo?
Ulteriori informazioni
Se uso il Configuration Editor di Microsoft servizio per generare la configurazione (impostazione MaxReceivedMessageSize e MaxBufferSize), funziona. Il problema è che l'endpoint viene quindi specificato in <service>
e non mi consente di specificare l'indirizzo relativo /NetPricingService/Service.asmx. Se modifico i collegamenti nella configurazione generata da svcutil (dove l'endpoint è sotto <client>
), non funziona con richieste di grandi dimensioni.
Per aggiungere specificità alla risposta di TrueWill: è necessario aggiungere il tag al web.config, che ospita il servizio web non cambia il tag nel web.config in cui il servizio è legato. Nel tag aggiungere un riferimento a un nuovo collegamento tramite bindingconfiguration. Creare la nuova associazione sotto il nodo binding e aggiungere le impostazioni maxBufferPoolSize e maxReceivedMessageSize lì. –
Grazie per questo. Potrei passare tutto il giorno senza accorgermene. –
Questo finalmente mi ha portato alla mia soluzione. La "semplice" configurazione .NET4 in cui la sezione '' non è "richiesta" non utilizzava la mia httpBinding .. aggiungendo esplicitamente il servizio con il binding risolto il problema. –
user2864740