【发布时间】:2013-08-16 16:17:34
【问题描述】:
我刚刚增加了我的 ServiceContract 中的方法数量。当我在 Visual Studio 中更新服务参考时,我收到消息:
元数据包含无法解析的引用: 'net.tcp://xxxxx.com:8002/DataQueryService/mex'。
XML 文档中有错误。
最大可命名字符 读取 XML 数据时已超出计数配额 (16384)。这 nametable 是一种数据结构,用于存储过程中遇到的字符串 XML 处理 - 具有非重复元素名称的长 XML 文档, 属性名称和属性值可能会触发此配额。这 可以通过更改 MaxNameTableCharCount 属性来增加配额 在创建 XML 时使用的 XmlDictionaryReaderQuotas 对象上 阅读器。
原来的服务器端配置是:
<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>
我修改为:
<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>
我需要对我的配置进行哪些其他更改才能使其正常工作?
更新 按照@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>
【问题讨论】:
-
也许您的消息太大或由太多 xml 元素/属性组成?
-
增加的是操作合约的数量。这导致了问题。
-
您使用的是哪个版本的 WCF(双方)?
标签: wcf configuration wcf-binding