最大字符串内容长度配额(8192)

Sof*_*ant 9 wcf readerquotas

为操作'CreateTransactionEntity'反序列化回复消息体时出错.读取XML数据时已超出最大字符串内容长度配额(8192).通过更改创建XML阅读器时使用的XmlDictionaryReaderQuotas对象的MaxStringContentLength属性,可以增加此配额.

嘿,即使我的web.config文件中有一个比生命更长的readerQuota节点,我仍然会收到此错误...

<system.serviceModel>
<bindings>
  <netTcpBinding>
    <binding name="BindingTcp"  maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" closeTimeout="00:10:00">
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647"
                  maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
    </binding>
  </netTcpBinding>
Run Code Online (Sandbox Code Playgroud)

在浏览了这个主题的互联网后,我似乎无法得到一个体面的答案.如果您有任何建议我会非常感激.

Tim*_*Tim 15

为了确保选择为绑定指定的值,必须将<binding>元素的绑定名称分配给元素的bindingConfiguration属性<endpoint>.如果不这样做,WCF将使用指定绑定的默认值.

<system.serviceModel>
  <bindings>
    <netTcpBinding>
      <binding name="BindingTcp"  maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" closeTimeout="00:10:00">
        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
      </binding>
    </netTcpBinding>
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,您已将"BindingTCP"指定为<binding>元素中的名称.所以在你的端点做这个:

<endpoint address="net.tcp://some.website.url/yourserivce" binding="netTcpBinding" bindingConfiguration="BindingTCP" contract="IYourContract" />
Run Code Online (Sandbox Code Playgroud)

根据错误的位置(在客户端或服务器上)将确定需要修改哪个配置文件.如果两端都发生错误,请修改两个配置文件.