2009-10-15 7 views
10

Я получаю эту ошибку:WCF MaxReceivedMessageSize: максимальный размер сообщения квоты превышены

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.

Как я могу увеличить это значение в клиентском приложении WCF или серверного приложения, и, если это возможно пример того, как это делается ?

ответ

18

Вы увеличиваете его на стороне клиента в приложение/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 и приняты, но стоит отметить, что, когда режим передачи = забуференный - MaxBufferSize и MaxReceivedMessageSize должен содержать такое же значение .... –

+1

Несоответствие между maxBufferSize и maxReceivedMessageSize дает исключение. – Kangkan

3

Вы должны установить атрибут MaxReceivedMessageSize в вашей конфигурации связывания. По умолчанию это 65536. Я предполагаю, что вы используете наборы данных или что-то в этом роде, которые в конечном итоге становятся довольно большими (главным образом потому, что они обычно представлены XML).

Хорошей новостью является то, что я думаю, что вам нужно изменить это только в своей конфигурации клиента. Взгляните ниже.

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

Смежные вопросы