2009-10-15 15 views
10

sto ottenendo questo errore:WCF MaxReceivedMessageSize: massima quota dimensione del messaggio eccede

The maximum message size quota for incoming messages (65536) has been exceeded. To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding element.

Come posso aumentare questo valore nell'applicazione client WCF o l'applicazione server, e, se possibile, un esempio di come questo viene fatto ?

risposta

18

si aumenta sul lato client in app/web.config:

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
      <binding name="WSBigQuotaConfig" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="2097152" maxBufferPoolSize="524288" maxReceivedMessageSize="2097152" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true"> 
       <readerQuotas maxDepth="32" maxStringContentLength="2097152" maxArrayLength="2097152" maxBytesPerRead="4096" maxNameTableCharCount="16384"/> 
       <security mode="None"> 
        <transport clientCredentialType="None" proxyCredentialType="None" realm=""/> 
        <message clientCredentialType="UserName" algorithmSuite="Default"/> 
       </security> 
      </binding> 
     </basicHttpBinding> 
    </bindings> 

    <client> 
     <endpoint 
      address="http://example.com/endpoint.svc" 
      binding="basicHttpBinding" 
      bindingConfiguration="WSBigQuotaConfig" 
      contract="ISomeServiceContract" /> 
    </client> 
</system.serviceModel> 
+4

+1 e accettate, ma anche la pena ricordare che in modalità di trasferimento = tamponata - MaxBufferSize e MaxReceivedMessageSize dovrebbe contenere lo stesso valore .... –

+1

Una mancata corrispondenza tra maxBufferSize e maxReceivedMessageSize fornisce un'eccezione. – Kangkan

3

è necessario impostare l'attributo MaxReceivedMessageSize nella configurazione vincolante. Per impostazione predefinita, è 65536. Presumo che tu stia utilizzando set di dati o qualcosa del genere che finisce per essere piuttosto grande (principalmente perché sono rappresentati con XML di solito).

La buona notizia è che penso che sia necessario modificarlo solo nella configurazione del client. Dai un'occhiata qui sotto.

<bindings> 
    <netTcpBinding> 
     <binding name="MyTcpBinding" 
       maxReceivedMessageSize="2000000"/> 
    </netTcpBinding> 
<bindings> 
1

<bindings> 
    <wsHttpBinding> 
    <binding name="wsHttpBinding_Username" maxReceivedMessageSize="20000000"   maxBufferPoolSize="20000000"> 
     <security mode="TransportWithMessageCredential"> 
     <message clientCredentialType="UserName" establishSecurityContext="false"/> 
     </security> 
    </binding> 
    </wsHttpBinding> 
</bindings> 

<client> 
    <endpoint 
      binding="wsHttpBinding" 
      bindingConfiguration="wsHttpBinding_Username" 
      contract="Exchange.Exweb.ExchangeServices.ExchangeServicesGenericProxy.ExchangeServicesType" 
      name="ServicesFacadeEndpoint" /> 
</client> 

Problemi correlati