2009-10-15 19 views
10

ja dostaję ten błąd:WCF MaxReceivedMessageSize: Maksymalna kwota rozmiar wiadomości przekroczył

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.

Jak można zwiększyć tę wartość w aplikacji klienta WCF lub aplikacji serwera, a jeśli to możliwe, to przykład jak to zrobić ?

Odpowiedz

18

zwiększyć ją po stronie klienta w 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 a kartą, ale również wspomnieć, że kiedy tryb transferu = buforowane - maxBufferSize i maxReceivedMessageSize powinna zawierać te same wartości .... –

+1

Niedopasowanie między maxBufferSize i maxReceivedMessageSize daje wyjątek. – Kangkan

3

trzeba ustawić atrybut MaxReceivedMessageSize w konfiguracji wiążący. Domyślnie jest to 65536. Zakładam, że używasz zestawów danych lub czegoś podobnego, co w końcu jest dość duże (głównie dlatego, że zwykle są reprezentowane przez XML).

Dobrą wiadomością jest to, że uważam, że wystarczy to zmienić w konfiguracji klienta. Spójrz poniżej.

<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> 

Powiązane problemy