capdragon
capdragon

Reputation: 14899

maximum nametable character count quota (16384) has been exceeded

When i try communicating with my WCF service i get the following error:

The maximum nametable character count quota (16384) has been exceeded while reading XML data. The nametable is a data structure used to store strings encountered during XML processing - long XML documents with non-repeating element names, attribute names and attribute values may trigger this quota. This quota may be increased by changing the MaxNameTableCharCount property on the XmlDictionaryReaderQuotas object used when creating the XML reader. Line 4, position 283.

I tried increasing my maxNameTableCharCount by adding readerQuotas as suggested here but i still get the same error.

...
<bindings>
    <basicHttpBinding>
        <binding name="oseo_basicHTTP_binding">
            <readerQuotas maxDepth ="2147483647"
                maxStringContentLength="2147483647"
                maxArrayLength="2147483647"
                maxBytesPerRead="2147483647"
                maxNameTableCharCount="2147483647" />
        </binding>
    </basicHttpBinding>
</bindings>
<services>
    <service name="oseo">
        <host>
            <baseAddresses>
                <add baseAddress="http://localhost:56565/" />
            </baseAddresses>
        </host>
        <endpoint address="" binding="basicHttpBinding" bindingConfiguration="oseo_basicHTTP_binding" contract="Ioseo" />
        <endpoint
            address="mex"
            binding="mexHttpBinding"
                contract="IMetadataExchange" />
    </service>
</services>
...

EDIT #1: Some background info:

This web.config is on the service side. I'm using SoapUI as the client and not a .NET client.

Upvotes: 0

Views: 3063

Answers (1)

carlosfigueira
carlosfigueira

Reputation: 87318

Make sure that you have the fully-qualified name of the service class in the name attribute of the <service> element. Your contract class is on the DataContract namespace (DataContract.Ioseo). If the service class is also in the same namespace, this is what you need to have:

<services>
  <service name="DataContract.OSEOService">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:51515/" />
      </baseAddresses>
    </host>
    <endpoint address=""
              binding="basicHttpBinding"
              bindingConfiguration="oseo_basicHTTP_binding"
              contract="DataContract.Ioseo" />
    <endpoint
        address="mex"
        binding="mexHttpBinding"
        contract="IMetadataExchange" />
</service>

Upvotes: 1

Related Questions