我们在我们的项目中使用 WCF 中的 NetTCPbinding。最近,随着服务操作的数量增加到超过 75 个,我们在启动服务时遇到了这个错误。
XML 文档中存在错误。
读取 XML 数据时已超出最大可命名字符计数配额 (16384)。nametable 是一种数据结构,用于存储在 XML 处理过程中遇到的字符串 - 具有不重复元素名称、属性名称和属性值的长 XML 文档可能会触发此配额。可以通过更改创建 XML 阅读器时使用的 XmlDictionaryReaderQuotas 对象的 MaxNameTableCharCount 属性来增加此配额。
正如此错误消息中所建议的,我们增加了MaxNameTableCharCount
属性配额,但这并没有解决我们的问题。
我们的团队还遵循以下链接中给出的解决方案。但是,这些都不适合我们。
WCF - 读取 XML 数据时已超出最大可命名字符计数配额 (16384)
http://geekswithblogs.net/claraoscura/archive/2007/08/20/114806.aspx
http://mnairooz.blogspot.in/2010/06/maximum-nametable-character-count-quota.html
请在我们的服务器端 app.config 下方找到
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true"/>
</system.web>
<system.serviceModel>
<services>
<service behaviorConfiguration="Test.ServiceLibraryHost.ServiceBehavior"
name="Test.ServiceLibraryHost.TestService">
<endpoint address="" binding="netTcpBinding" bindingConfiguration="myNetTcpBinding" contract="Test.ServiceLibraryHost.ITestService">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexTcpBinding" bindingConfiguration="" contract="IMetadataExchange"/>
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:8529/TestService"/>
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="Test.ServiceLibraryHost.ServiceBehavior">
<serviceMetadata />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<netTcpBinding>
<binding name="myNetTcpBinding">
<readerQuotas maxDepth="32" maxStringContentLength="21745878" maxArrayLength="21745878"
maxBytesPerRead="21745878" maxNameTableCharCount="21745878" />
</binding>
</netTcpBinding>
</bindings>
</system.serviceModel>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
在这种情况下,任何帮助将不胜感激。如果您需要更多信息,请告诉我。谢谢你。