protected override async Task OnReplyAsync(Message message, CancellationToken token)
        {
            ICompressedMessageEncoder compressedMessageEncoder = _connection.MessageEncoderFactory.Encoder as ICompressedMessageEncoder;

            if (compressedMessageEncoder != null && compressedMessageEncoder.CompressionEnabled)
            {
                compressedMessageEncoder.AddCompressedMessageProperties(message, _connection.FramingDecoder.ContentType);
            }

            await StreamingConnectionHelper.WriteMessageAsync(message, _connection, false, _connection.ServiceDispatcher.Binding, token);
        }
Пример #2
0
            public override HttpOutput GetHttpOutput(Message message)
            {
                // TODO: Enable KeepAlive setting
                //if (!_httpBindingElement.KeepAlive)
                //{
                //    aspNetContext.Response.Headers["Connection"] = "close";
                //}

                ICompressedMessageEncoder compressedMessageEncoder = HttpTransportSettings.MessageEncoderFactory.Encoder as ICompressedMessageEncoder;

                if (compressedMessageEncoder != null && compressedMessageEncoder.CompressionEnabled)
                {
                    string acceptEncoding = _aspNetContext.Request.Headers[HttpChannelUtilities.AcceptEncodingHeader];
                    compressedMessageEncoder.AddCompressedMessageProperties(message, acceptEncoding);
                }

                return(HttpOutput.CreateHttpOutput(_aspNetContext, HttpTransportSettings, message, HttpMethod));
            }
Пример #3
0
        public override HttpOutput GetHttpOutput(Message message)
        {
            HttpInput httpInput = this.GetHttpInput(false);

            // work around http.sys keep alive bug with chunked requests, see MB 49676, this is fixed in Vista
            if ((httpInput != null && httpInput.ContentLength == -1 && !OSEnvironmentHelper.IsVistaOrGreater) || !this.KeepAliveEnabled)
            {
                result.SetConnectionClose();
            }

            ICompressedMessageEncoder compressedMessageEncoder = this.Listener.MessageEncoderFactory.Encoder as ICompressedMessageEncoder;

            if (compressedMessageEncoder != null && compressedMessageEncoder.CompressionEnabled)
            {
                string acceptEncoding = this.result.GetAcceptEncoding();
                compressedMessageEncoder.AddCompressedMessageProperties(message, acceptEncoding);
            }

            return(new HostedRequestHttpOutput(result, Listener, message, this));
        }
Пример #4
0
            public override HttpOutput GetHttpOutput(Message message)
            {
                // work around http.sys keep alive bug with chunked requests, see MB 49676, this is fixed in Vista
                if (listenerContext.Request.ContentLength64 == -1 && !OSEnvironmentHelper.IsVistaOrGreater)
                {
                    listenerContext.Response.KeepAlive = false;
                }
                else
                {
                    listenerContext.Response.KeepAlive = listener.KeepAliveEnabled;
                }
                ICompressedMessageEncoder compressedMessageEncoder = listener.MessageEncoderFactory.Encoder as ICompressedMessageEncoder;

                if (compressedMessageEncoder != null && compressedMessageEncoder.CompressionEnabled)
                {
                    string acceptEncoding = listenerContext.Request.Headers[HttpChannelUtilities.AcceptEncodingHeader];
                    compressedMessageEncoder.AddCompressedMessageProperties(message, acceptEncoding);
                }

                return(HttpOutput.CreateHttpOutput(listenerContext.Response, Listener, message, this.HttpMethod));
            }
        private static void ValidateContentType(FramingConnection connection, ServerSessionDecoder decoder)
        {
            var            messageEncoderFactory = connection.MessageEncoderFactory;
            MessageEncoder messageEncoder        = messageEncoderFactory.CreateSessionEncoder();

            connection.MessageEncoder = messageEncoder;

            if (!messageEncoder.IsContentTypeSupported(decoder.ContentType))
            {
                // TODO: Send fault response
                //SendFault(FramingEncodingString.ContentTypeInvalidFault, ref timeoutHelper);
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ProtocolException(SR.Format(
                                                                                                    SR.ContentTypeMismatch, decoder.ContentType, messageEncoder.ContentType)));
            }

            ICompressedMessageEncoder compressedMessageEncoder = messageEncoder as ICompressedMessageEncoder;

            if (compressedMessageEncoder != null && compressedMessageEncoder.CompressionEnabled)
            {
                compressedMessageEncoder.SetSessionContentType(decoder.ContentType);
            }
        }