当我尝试与我的WCF服务通信时,我收到以下错误:
已超出最大名称表字符数限额(16384) 在阅读XML数据时。名称表是用于的数据结构 存储XML处理期间遇到的字符串 - 长XML文档 具有非重复元素名称,属性名称和属性值 可能会触发此配额。可以通过更改此配额来增加此配额 XmlDictionaryReaderQuotas对象上的MaxNameTableCharCount属性 在创建XML阅读器时使用。第4行,第283位。
我尝试通过添加readerQuotas as suggested here来增加maxNameTableCharCount
,但我仍然遇到同样的错误。
...
<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>
...
编辑#1: 一些背景信息:
此web.config位于服务端。我使用SoapUI作为客户端而不是.NET客户端。
答案 0 :(得分:1)
确保name
元素的<service>
属性中包含服务类的 完全限定名称 。您的合同类位于DataContract
命名空间(DataContract.Ioseo)上。如果服务类也在同一名称空间中,那么您需要具备以下功能:
<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>