2009-10-15 14 views
10

ich diese Störung erhalte:WCF MaxReceivedMessageSize: maximale Nachrichtengröße Quote überschritten

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.

Wie kann ich diesen Wert in der WCF-Client-Anwendung oder der Server-Anwendung zu erhöhen, und wenn möglich, ein Beispiel dafür, wie dies geschehen ist ?

Antwort

18

Sie erhöhen es auf der Client-Seite 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 und akzeptiert, aber auch erwähnenswert, dass, wenn die Übertragung mode = gepuffert - MaxBufferSize und MaxReceivedMessageSize sollte den gleichen Wert enthalten .... –

+1

Eine Nichtübereinstimmung zwischen maxBufferSize und maxReceivedMessageSize gibt Ausnahme. – Kangkan

3

Sie benötigen das MaxReceivedMessageSize Attribut in Ihrer verbindlichen Konfiguration einzustellen. Standardmäßig ist es 65536. Ich gehe davon aus, dass Sie Datensätze oder etwas in der Art verwenden, die ziemlich groß sind (meistens weil sie normalerweise mit XML dargestellt werden).

Die gute Nachricht ist, dass ich denke, dass Sie dies nur in Ihrer Client-Konfiguration ändern müssen. Schaue unten nach.

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

Verwandte Themen