/// <summary>
        /// Initializes a new instance.
        /// </summary>
        public TextOrMtomEncoder(MessageVersion messageVersion, XmlDictionaryReaderQuotas readerQuotas, int maxReadPoolSize, int maxWritePoolSize, int maxBufferSize)
        {
            if (messageVersion is null)
            {
                throw new ArgumentNullException(nameof(messageVersion));
            }
            if (readerQuotas is null)
            {
                throw new ArgumentNullException(nameof(readerQuotas));
            }

            var textEncoderBindingElement = new TextMessageEncodingBindingElement(messageVersion, Encoding.UTF8);

            textEncoderBindingElement.MaxReadPoolSize  = maxReadPoolSize;
            textEncoderBindingElement.MaxWritePoolSize = maxWritePoolSize;
            readerQuotas.CopyTo(textEncoderBindingElement.ReaderQuotas);
            text = textEncoderBindingElement.CreateMessageEncoderFactory().Encoder;

            if (messageVersion.Envelope != EnvelopeVersion.None)
            {
                var mtomEncoderBindingElement = new MtomMessageEncodingBindingElement(messageVersion, Encoding.UTF8);
                mtomEncoderBindingElement.MaxBufferSize    = maxBufferSize;
                mtomEncoderBindingElement.MaxReadPoolSize  = maxReadPoolSize;
                mtomEncoderBindingElement.MaxWritePoolSize = maxWritePoolSize;
                readerQuotas.CopyTo(mtomEncoderBindingElement.ReaderQuotas);
                mtom = mtomEncoderBindingElement.CreateMessageEncoderFactory().Encoder;
            }
        }
Exemple #2
0
        private MessageEncoder GetEncoder(string contentType)
        {
            //todo: this method is not completely implemented. Look at comments bellow.
            if (Regex.IsMatch(contentType, "^multipart.*"))
            {
                var mtomBindingElement = new MtomMessageEncodingBindingElement(_factory.MessageVersion, Encoding.GetEncoding(_factory.CharSet));
                var mtomFactory        = mtomBindingElement.CreateMessageEncoderFactory();
                return(mtomFactory.Encoder);
                //return _mtomEncoder;
            }
            else // if (...)
            {
                var textBindingElement = new TextMessageEncodingBindingElement(_factory.MessageVersion, Encoding.GetEncoding(_factory.CharSet));
                //textBindingElement.ReaderQuotas.MaxStringContentLength = 65535;
                //textBindingElement.ReaderQuotas.MaxStringContentLength = textBindingElement.ReaderQuotas.MaxBytesPerRead = 65535;
                textBindingElement.ReaderQuotas.MaxStringContentLength = textBindingElement.ReaderQuotas.MaxBytesPerRead = 1024 * 1024 * 16;

                var textFactory = textBindingElement.CreateMessageEncoderFactory();
                return(textFactory.Encoder);
                //return _textEncoder;
            }
            //else if (...)
            //{
            //    return new BinaryMessageEncodingBindingElement();
            //}
            throw new NotSupportedException(string.Format("Unexpected content-type: \"{0}\".", contentType));
        }
Exemple #3
0
        static int SizeOfMtomMessage(Message message)
        {
            // Create an MTOM encoder
            MessageEncodingBindingElement element = new MtomMessageEncodingBindingElement();
            MessageEncoderFactory factory = element.CreateMessageEncoderFactory();
            MessageEncoder encoder = factory.Encoder;

            // Write the message and return its length
            MemoryStream stream = new MemoryStream();
            encoder.WriteMessage(message, stream);
            int size = (int)stream.Length;
            
            stream.Close();
            message.Close();
            return size;
        }
Exemple #4
0
        static int SizeOfMtomMessage(Message message)
        {
            // Create an MTOM encoder
            MessageEncodingBindingElement element = new MtomMessageEncodingBindingElement();
            MessageEncoderFactory         factory = element.CreateMessageEncoderFactory();
            MessageEncoder encoder = factory.Encoder;

            // Write the message and return its length
            MemoryStream stream = new MemoryStream();

            encoder.WriteMessage(message, stream);
            int size = (int)stream.Length;

            stream.Close();
            message.Close();
            return(size);
        }
Exemple #5
0
        private void InitializeEncoders(MessageVersion messageVersion, Encoding encoding)
        {
            // MTOM
            var mtomBindingElement = new MtomMessageEncodingBindingElement(messageVersion, encoding);
            var mtomFactory        = mtomBindingElement.CreateMessageEncoderFactory();

            _mtomEncoder = mtomFactory.Encoder;

            // Text
            var textBindingElement = new TextMessageEncodingBindingElement(messageVersion, encoding);
            var textFactory        = textBindingElement.CreateMessageEncoderFactory();

            _textEncoder = textFactory.Encoder;

            // Binary
            //var binaryBindingElement = new BinaryMessageEncodingBindingElement(messageVersion, encoding);
            //var binaryFactory = binaryBindingElement.CreateMessageEncoderFactory();
            //_binaryEncoder = binaryFactory.Encoder;
        }
Exemple #6
0
        private void InitializeEncoders(MessageVersion messageVersion, Encoding encoding)
        {
            // MTOM
            var mtomBindingElement = new MtomMessageEncodingBindingElement(messageVersion, encoding);
            var mtomFactory        = mtomBindingElement.CreateMessageEncoderFactory();

            _mtomEncoder = mtomFactory.Encoder;

            // Text
            var textBindingElement = new TextMessageEncodingBindingElement(messageVersion, encoding);

            //textBindingElement.ReaderQuotas.MaxStringContentLength = 65535;
            //textBindingElement.ReaderQuotas.MaxStringContentLength = textBindingElement.ReaderQuotas.MaxBytesPerRead = 65535;
            textBindingElement.ReaderQuotas.MaxStringContentLength = textBindingElement.ReaderQuotas.MaxBytesPerRead = 1024 * 1024 * 16;

            var textFactory = textBindingElement.CreateMessageEncoderFactory();

            _textEncoder = textFactory.Encoder;

            // Binary
            //var binaryBindingElement = new BinaryMessageEncodingBindingElement(messageVersion, encoding);
            //var binaryFactory = binaryBindingElement.CreateMessageEncoderFactory();
            //_binaryEncoder = binaryFactory.Encoder;
        }