WCF MaxReceivedMessageSize Error

CoolArchTek picture CoolArchTek · Sep 8, 2011 · Viewed 25.3k times · Source

I am getting below error when calling a wcf service (wshttpbinding). I already set the MaxReceivedMessageSize to max value (2147483647). Can any one tell me whats wrong?

I am using " security mode="Message" ", is that a problem?

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

Config: (CLIENT)

<system.serviceModel>
    <bindings>
      <wsHttpBinding>
        <binding name="wsDemo" closeTimeout="00:15:00" openTimeout="00:15:00"
          receiveTimeout="00:15:00" sendTimeout="00:15:00" bypassProxyOnLocal="false"
          transactionFlow="false" hostNameComparisonMode="StrongWildcard"
          maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647" messageEncoding="Text"
          textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
          <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
            maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
          <reliableSession ordered="true" inactivityTimeout="00:15: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://demo.com/DemoServices/DemoProduct.svc"
        binding="wsHttpBinding" bindingConfiguration="wsDemo" contract="DemoService.IProducts"
        name="wsDemo">
        <identity>
          <dns value="localhost" />
        </identity>
      </endpoint>
    </client>
  </system.serviceModel>

Server Config:

  <system.serviceModel>
    <services>
      <service behaviorConfiguration="LargeWS" name="GexaEnrollCustomer.GexaEnroll">
        <endpoint address="" binding="wsHttpBinding" bindingConfiguration="SecureBinding"
          name="wsDemo" contract="MyInterfaces.IProducts">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" name="wsMex"
          contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://demo.com/DemoServices/" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="LargeWS">
          <serviceThrottling maxConcurrentCalls="200" maxConcurrentInstances="200" maxConcurrentSessions="200" />
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
          <dataContractSerializer maxItemsInObjectGraph="2147483647" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <wsHttpBinding>
        <binding name="SecureBinding" maxBufferPoolSize="2147483647" closeTimeout="00:15:00" openTimeout="00:15:00"
          receiveTimeout="00:15:00" sendTimeout="00:15:00" maxReceivedMessageSize="2147483647">
          <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
            maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
          <security mode="Message">
            <transport clientCredentialType="Windows" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />

  </system.serviceModel>

Answer

CodingWithSpike picture CodingWithSpike · Sep 8, 2011

Note that the error message states "for incoming messages", which leads me to believe that it is the server side throwing this error, not the client. You probably need to set MaxReceivedMessageSize on the server too, in addition to the client.

Typically you would set both the client and the server's configs to the same sizes.