在浏览了互联网和StackOverflow之后,我还没有找到一个有效的解决方案。当我试图读取我得到的响应时,内部异常是:
读取XML数据时已超出最大字符串内容长度配额(8192)。通过更改创建XML阅读器时使用的XmlDictionaryReaderQuotas对象的MaxStringContentLength属性,可以增加此配额。
我是一个联系服务器的客户端,我收到的回复是,在查看响应后,远远大于8192限制。我已将我的客户端配置更新到最高级别,但它没有帮助。我不知道在哪里更新限制,所以任何帮助都会受到赞赏:
客户端配置:
<configuration>
<system.serviceModel>
<client>
<endpoint name="CaqhCore_EndpointWithCertificates" address="https://MyEndPoint" behaviorConfiguration="Cbc_BehaviorWithCertificateSigning" binding="customBinding" bindingConfiguration="Cbc_BindingWithCertificates" contract="CORETransactions">
<identity>
<certificateReference findValue="1h 1h 1h 1h 1h 1h 1h 1h 1h 1h" x509FindType="FindByThumbprint" />
</identity>
</endpoint>
</client>
<bindings>
<customBinding>
<binding name="Cbc_BindingWithCertificates" maxReceivedMessageSize="2147483647">
<security enableUnsecuredResponse="false" allowSerializedSigningTokenOnReply="true" authenticationMode="MutualCertificate" requireDerivedKeys="false" includeTimestamp="true" messageProtectionOrder="SignBeforeEncrypt" messageSecurityVersion="WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10">
<issuedTokenParameters keyType="AsymmetricKey" />
<secureConversationBootstrap>
<issuedTokenParameters keyType="AsymmetricKey" />
</secureConversationBootstrap>
</security>
<textMessageEncoding messageVersion="Soap12WSAddressingAugust2004" writeEncoding="utf-8">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</textMessageEncoding>
<httpsTransport />
</binding>
</customBinding>
</bindings>
</system.serviceModel>
</configuration>
请注意,由于隐私问题,我已从配置中删除了我认为不相关的信息,但如果您需要查看行为或其他元素等其他内容,请与我们联系。
答案 0 :(得分:0)
我找到了答案。问题是我正在使用的代码(不是由我编写)的代码包含对象: XmlDictionaryReaderQuotas 已注释掉,这意味着它无法从配置文件中读取readerQuotas节点,因此使用默认值。