//Called by the WCF to create the binding element protected override BindingElement CreateBindingElement() { GZipMessageEncodingBindingElement bindingElement = new GZipMessageEncodingBindingElement(); this.ApplyConfiguration(bindingElement); return(bindingElement); }
//Called by the WCF to apply the configuration settings (the property above) to the binding element public override void ApplyConfiguration(BindingElement bindingElement) { GZipMessageEncodingBindingElement binding = (GZipMessageEncodingBindingElement)bindingElement; PropertyInformationCollection propertyInfo = this.ElementInformation.Properties; if (propertyInfo["innerMessageEncoding"].ValueOrigin != PropertyValueOrigin.Default) { switch (this.InnerMessageEncoding) { case "textMessageEncoding": binding.InnerMessageEncodingBindingElement = new TextMessageEncodingBindingElement(); ((TextMessageEncodingBindingElement)binding.InnerMessageEncodingBindingElement).MaxReadPoolSize = int.MaxValue; ((TextMessageEncodingBindingElement)binding.InnerMessageEncodingBindingElement).MaxWritePoolSize = int.MaxValue; ((TextMessageEncodingBindingElement)binding.InnerMessageEncodingBindingElement).ReaderQuotas.MaxStringContentLength = int.MaxValue; ((TextMessageEncodingBindingElement)binding.InnerMessageEncodingBindingElement).ReaderQuotas.MaxArrayLength = int.MaxValue; ((TextMessageEncodingBindingElement)binding.InnerMessageEncodingBindingElement).ReaderQuotas.MaxBytesPerRead = int.MaxValue; break; case "binaryMessageEncoding": binding.InnerMessageEncodingBindingElement = new BinaryMessageEncodingBindingElement(); ((BinaryMessageEncodingBindingElement)binding.InnerMessageEncodingBindingElement).MaxReadPoolSize = int.MaxValue; ((BinaryMessageEncodingBindingElement)binding.InnerMessageEncodingBindingElement).MaxWritePoolSize = int.MaxValue; ((BinaryMessageEncodingBindingElement)binding.InnerMessageEncodingBindingElement).ReaderQuotas.MaxStringContentLength = int.MaxValue; ((BinaryMessageEncodingBindingElement)binding.InnerMessageEncodingBindingElement).ReaderQuotas.MaxArrayLength = int.MaxValue; ((BinaryMessageEncodingBindingElement)binding.InnerMessageEncodingBindingElement).ReaderQuotas.MaxBytesPerRead = int.MaxValue; break; } } }