已超出最大名称表字符计数配额(16384)

ope*_*hac 5 configuration wcf wcf-binding

我刚刚增加了ServiceContract中的方法数量.当我在Visual Studio中更新服务引用时,我收到消息:

元数据包含无法解析的引用:'net.tcp://xxxxx.com:8002/DataQueryService/mex'.

XML文档中存在错误.

读取XML数据时已超出最大名称字符集计数配额(16384).nametable是用于存储XML处理期间遇到的字符串的数据结构 - 具有非重复元素名称,属性名称和属性值的长XML文档可能会触发此配额.通过更改创建XML阅读器时使用的XmlDictionaryReaderQuotas对象上的MaxNameTableCharCount属性,可以增加此配额.

原始服务器端配置是:

 <services>
      <service behaviorConfiguration="XXXXX.DataQueryService.ServiceBehavior" name="XXXXX.DataQueryService.QueryService">
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://xxxxx.com:8002/DataQueryService" />
          </baseAddresses>
        </host>
        <endpoint name="MexEndpoint" address="mex" binding="customBinding" bindingConfiguration="unsecureTcpMex" contract="IMetadataExchange" />
    </service>
</services>

<bindings>
    <customBinding>
        <binding name="unsecureTcpMex">
            <tcpTransport portSharingEnabled="True" />
        </binding>
    </customBinding>    
</bindings>
Run Code Online (Sandbox Code Playgroud)

我修改为:

<bindings>
    <customBinding>
        <binding name="unsecureTcpMex">
            <textMessageEncoding>
                <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
            </textMessageEncoding>
            <tcpTransport portSharingEnabled="True" maxReceivedMessageSize="2147483647"  />
        </binding>
    </customBinding>    
</bindings>
Run Code Online (Sandbox Code Playgroud)

我需要对配置进行哪些其他更改才能使其正常工作?

更新 以下@Chris的建议我尝试更新SVCUtil的配置文件.我为我的端点添加了一个名称,以便它匹配(上面更新).SvcUtil.config现在如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.serviceModel>
        <bindings>
            <customBinding>
                <binding name="unsecureTcpMex">
                    <textMessageEncoding>
                        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
                    </textMessageEncoding>
                    <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
                </binding>
            </customBinding>
        </bindings>
        <client>
            <endpoint binding="customBinding" bindingConfiguration="unsecureTcpMex"
                contract="IMetadataExchange"
                name="MexEndpoint" />
        </client>
    </system.serviceModel>
</configuration>
Run Code Online (Sandbox Code Playgroud)

Chr*_*ris 0

这应该有所帮助: http: //geekswithblogs.net/claraoscura/archive/2007/08/20/114806.aspx 似乎解决方案是为 svcutil 创建一个配置文件并将其放在与其相同的文件夹中。