我們需要在我們的WCF Web服務的壓縮和已經找到了一個很好的解決方案:創建自定義綁定程序
http://www.codeproject.com/Articles/53718/Extending-WCF-Part-II
這裏只有一個問題。配置文件是沒有選擇的。這些自定義綁定如何在代碼中創建?
<customBinding>
<binding name="ZipBinding" closeTimeout="00:10:00"
openTimeout="00:10:00" receiveTimeout="00:10:00"
sendTimeout="00:10:00">
<customMessageEncoding innerMessageEncoding="mtomMessageEncoding"
messageEncoderType="YourAssemblyName.YourMessageEncoder,
WcfExtensions">
<readerQuotas maxDepth="999999999"
maxStringContentLength="999999999"
maxArrayLength="999999999" maxBytesPerRead="999999999"
maxNameTableCharCount="999999999">
</readerQuotas>
</customMessageEncoding>
<httpTransport maxBufferSize="999999999"
maxReceivedMessageSize="999999999"
authenticationScheme="Anonymous"
proxyAuthenticationScheme="Anonymous" useDefaultWebProxy="true"/>
</binding>
</customBinding>
這是我想出來的:
MessageEncodingBindingElementExtension customMessageEncoding = new MessageEncodingBindingElementExtension
{
InnerMessageEncoding = "binaryMessageEncoding",
MessageEncoderType = "WcfExtensions.GZipMessageEncoder, WcfExtensions",
};
customMessageEncoding.ReaderQuotas.MaxDepth = 999999999;
customMessageEncoding.ReaderQuotas.MaxStringContentLength = 999999999;
customMessageEncoding.ReaderQuotas.MaxArrayLength = 999999999;
customMessageEncoding.ReaderQuotas.MaxBytesPerRead = 999999999;
customMessageEncoding.ReaderQuotas.MaxNameTableCharCount = 999999999;
CustomBinding zipBinding = new CustomBinding(customMessageEncoding, new HttpTransportBindingElement
{
MaxBufferSize = 999999999,
MaxReceivedMessageSize = 999999999,
AuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous,
ProxyAuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous,
UseDefaultWebProxy = true
});
zipBinding.CloseTimeout = new TimeSpan(0, 10, 0);
zipBinding.OpenTimeout = new TimeSpan(0, 10, 0);
zipBinding.ReceiveTimeout = new TimeSpan(0, 10, 0);
zipBinding.SendTimeout = new TimeSpan(0, 10, 0);
但出於某種原因CustomBinding不接受customMessageEncoding ...
謝謝!這工作。 – Juha 2012-03-06 11:48:32