WCF maxReceivedMessageSize not being read from config

I have a the following server side app.config for a WCF service:

        <binding name="default" maxReceivedMessageSize="5000000">
          <readerQuotas maxStringContentLength="5000000" maxArrayLength="5000000" />
      <service behaviorConfiguration="Core.TOAService.Service1Behavior"
        <endpoint address="" binding="wsHttpBinding" contract="Core.TOAService.ITOAService">
            <dns value="localhost" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
            <add baseAddress="http://localhost:8732/Design_Time_Addresses/Core.TOAService/TOAService/" />
        <behavior name="Core.TOAService.Service1Behavior">
          <!-- To avoid disclosing metadata information, 
          set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="True"/>
          <!-- To receive exception details in faults for debugging purposes, 
          set the value below to true.  Set to false before deployment 
          to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="true" />

When I try and pass this service a largish file (only ~250KB), I get an exception logged in the svclog file:

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.

As you can see from the binding section at the top of the config, I have tried to set the maxReceivedMessageSize to 5000000 but the service still thinks it is set to the default 65536. Any ideas as to what is wrong or which is the "appropriate" binding element?


There's more settings :-) Try "maxBufferPoolSize" and "maxBufferSize" on the <binding> tag.

But the biggest problem is: your endpoint does not reference that binding configuration!

<endpoint address="" 
          binding="wsHttpBinding" contract="Core.TOAService.ITOAService">

You need to add a reference to it so that it gets useful - just calling it "default" doesn't work.....

<endpoint address="" 

You're ahead of your times ;-) In WCF 4 (with .NET 4.0 - sometime later this year 2009), you'll be able to define "default binding configurations" without having to explicitly name and reference them - but for now, you need to create a link between your endpoint and its binding and any binding (or behavior) configuration you have!


If you're still getting this error message while using the WCF Test Client, it's because the client has a separate MaxBufferSize setting.

To correct the issue:

  1. Right-Click on the Config File node at the bottom of the tree
  2. Select Edit with SvcConfigEditor

A list of editable settings will appear, including MaxBufferSize.

Note: Auto-generated proxy clients also set MaxBufferSize to 65536 by default.

There are several places that you need to set the size. In your case I think that you need to add read quotas. Here is an example:

    <binding name="httpBasicBinding_Service" closeTimeout="00:03:00"
      openTimeout="00:03:00" receiveTimeout="00:10:00" sendTimeout="00:03:00"
      maxBufferPoolSize="2000001" maxReceivedMessageSize="2000001">
      <readerQuotas maxDepth="2000001" maxStringContentLength="2000001"
        maxArrayLength="2000001" maxBytesPerRead="2000001" maxNameTableCharCount="2000001" />

Need Your Help

Spark Dataset API - join

scala apache-spark apache-spark-sql apache-spark-dataset

I am trying to use the Spark Dataset API but I am having some issues doing a simple join.

Alternative for "$(document).ready" function

jquery asp.net fancybox document-ready

I am using fancybox in an aspx page. The document ready function does not work in this page for a lightbox. Someone told me to write a new javascript code for loading the lightbox in that page.