我已经通过在MSDN上实现了示例GZip encoder来启用了对我的WCF服务的压缩,并且一切都运行良好,但现在需要将我的阅读器配额转移到此绑定,因为我以前有这些定制时我正在使用wsHttpBinding
。
这是我在wcf服务的Web.config
中声明的GZip绑定:
<customBinding>
<binding name="BufferedHttpCompressionBinding" closeTimeout="00:00:15"
openTimeout="00:00:15" receiveTimeout="00:00:15" sendTimeout="00:00:15">
<gzipMessageEncoding innerMessageEncoding="textMessageEncoding">
</gzipMessageEncoding>
<httpTransport maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
maxBufferSize="2147483647">
<extendedProtectionPolicy policyEnforcement="Never" />
</httpTransport>
</binding>
</customBinding>
正如您在没有读者配额的情况下所看到的,现在这里是我想添加的读者群:
<readerQuotas
maxDepth="64"
maxStringContentLength="1048576"
maxArrayLength="1048576"
maxBytesPerRead="1048576"
maxNameTableCharCount="1048576" />
我尝试将此节点作为<binding />
元素的子节点插入,并且我在<gzipMessageEncoding />
元素之间看到了它的在线示例,这两个元素都没有为我返回错误:
System.Configuration.ConfigurationErrorsException: Unrecognized element 'readerQuotas'.
有什么想法?是否可以使用自定义绑定的阅读器配额?我想它必须是,但这可能是一个类更改,或一个简单的方法来让它通过配置?希望一些WCF高手可以提供帮助:)
非常感谢, 格雷厄姆。
答案 0 :(得分:2)
看一下这个帖子http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/633c5dc8-c134-40c9-9dfc-41a4b1cd3279/
您必须修改GZipMessageEncodingElement和GZipMessageEncodingBindingElement以公开readerQuotas ...
答案 1 :(得分:0)
我能够以编程方式执行此操作:
var gzipBindingElement = new GZipMessageEncodingBindingElement();
myBinding.ReaderQuotas.CopyTo((TextMessageEncodingBindingElement)gzipBindingElement.InnerMessageEncodingBindingElement).ReaderQuotas);