chosenOne Thabs
chosenOne Thabs

Reputation: 1640

Error: the maximum message size quota for incoming messages (65536) has been exceeded

I get this error message

The maximum message size quota for incoming messages (65536) has been exceeded

when I try to upload files(+-160KB) to my WCF service. I've tried to increase the values of the following attributes :

maxReceivedMessageSize,
maxBufferPoolSize,
maxArrayLength,
maxStringContentLength, 

but I had no luck. My WCF config file looks like this :

<system.serviceModel>
    <bindings>
      <wsHttpBinding>
        <binding name="wsBinding" maxReceivedMessageSize="3200000" maxBufferPoolSize="100000000"  >
          <readerQuotas maxArrayLength="1000000000" maxStringContentLength="3200000" />
        </binding>
      </wsHttpBinding>
    </bindings>
    <client />
    <services>
      <service behaviorConfiguration="PMSService.Thomolosha"
        name="PMSService.Thomolosha" >
        <endpoint address="" binding="wsHttpBinding"  contract="PMSService.ThomoloshaDeclaration">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding"  contract="IMetadataExchange" />
      </service>
      <service behaviorConfiguration="PMSService.Arekwe"
              name="PMSService.Arekwe">
        <endpoint address="" binding="wsHttpBinding" contract="PMSService.ArekweDeclaration">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="PMSService.Thomolosha">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
        <behavior name="PMSService.Arekwe">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

My Winform config looks like this :

<system.serviceModel>
    <bindings>
      <wsHttpBinding>
        <binding name="WSHttpBinding_ThomoloshaDeclaration" closeTimeout="00:01:00"
          openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
          bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
          maxBufferPoolSize="100000000" maxReceivedMessageSize="3200000" messageEncoding="Text"
          textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
          <readerQuotas maxDepth="32" maxStringContentLength="3200000" maxArrayLength="1000000000"
            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <reliableSession ordered="true" inactivityTimeout="00:10:00"
            enabled="false" />
          <security mode="Message">
            <transport clientCredentialType="Windows" proxyCredentialType="None"
              realm="" />
            <message clientCredentialType="Windows" negotiateServiceCredential="true"
              algorithmSuite="Default" />
          </security>
        </binding>
        <binding name="WSHttpBinding_ArekweDeclaration" closeTimeout="00:01:00"
          openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
          bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
          maxBufferPoolSize="100000000" maxReceivedMessageSize="3200000" messageEncoding="Text"
          textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
          <readerQuotas maxDepth="32" maxStringContentLength="3200000" maxArrayLength="1000000000"
            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <reliableSession ordered="true" inactivityTimeout="00:10:00"
            enabled="false" />
          <security mode="Message">
            <transport clientCredentialType="Windows" proxyCredentialType="None"
              realm="" />
            <message clientCredentialType="Windows" negotiateServiceCredential="true"
              algorithmSuite="Default" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://localhost:57388/Thomolosha.svc" binding="wsHttpBinding"
        bindingConfiguration="WSHttpBinding_ThomoloshaDeclaration" contract="Thomolosha.ThomoloshaDeclaration"
        name="WSHttpBinding_ThomoloshaDeclaration">
        <identity>
          <dns value="localhost" />
        </identity>
      </endpoint>
      <endpoint address="http://localhost:57388/Arekwe.svc" binding="wsHttpBinding"
        bindingConfiguration="WSHttpBinding_ArekweDeclaration" contract="Arekwe.ArekweDeclaration"
        name="WSHttpBinding_ArekweDeclaration">
        <identity>
          <dns value="localhost" />
        </identity>
      </endpoint>
    </client>
  </system.serviceModel>

Upvotes: 0

Views: 1400

Answers (1)

Tim
Tim

Reputation: 28530

It sounds like you're getting the error on the service side (when you try to upload). According to your posted service config, you've set a higher limit for maxReceivedMessageSize and other settings, but you never assign that binding to your service endpoint(s), so WCF is using the default value for maxReceivedMessageSize (65536).

You need to assign your defined binding (wsBinding) to your service endpoint(s) via the bindingConfiguration attribute of the endpoint element, like this:

<endpoint address="" 
          binding="wsHttpBinding"
          bindingCongifuration="wsBinding"
          contract="PMSService.ThomoloshaDeclaration">

Now the service will use the binding configuration you've defined, that has the larger size.

Upvotes: 3

Related Questions