Beispiel #1
0
        } // SendContinue

        public void SendResponse(Stream httpContentStream,
                                 String statusCode, String reasonPhrase,
                                 ITransportHeaders headers)
        {
            if (_responseStream != null)
            {
                _responseStream.Close();
                if (_responseStream != httpContentStream)
                {
                    throw new RemotingException(
                              "Http transport sink was not given the stream that it returned from GetResponseStream().");
                }

                // we are done with the response stream
                _responseStream = null;
            }
            else
            {
                if (headers == null)
                {
                    headers = new TransportHeaders();
                }

                String serverHeader = (String)headers["Server"];
                if (serverHeader != null)
                {
                    serverHeader = HttpServerTransportSink.ServerHeader + ", " + serverHeader;
                }
                else
                {
                    serverHeader = HttpServerTransportSink.ServerHeader;
                }
                headers["Server"] = serverHeader;

                // Add length to response headers if necessary
                if (!AllowChunkedResponse && (httpContentStream != null))
                {
                    headers["Content-Length"] = httpContentStream.Length.ToString();
                }
                else
                if (httpContentStream == null)
                {
                    headers["Content-Length"] = "0";
                }

                GetResponseStream(statusCode, reasonPhrase, headers);

                // write HTTP content
                if (httpContentStream != null)
                {
                    StreamHelper.CopyStream(httpContentStream, _responseStream);

                    _responseStream.Close();
                    httpContentStream.Close();
                }

                // we are done with the response stream
                _responseStream = null;
            }
        } // SendResponse
        } // SendContinue

        public void SendResponse(Stream httpContentStream,
                                 String statusCode, String reasonPhrase,
                                 ITransportHeaders headers)
        {
            if (_responseStream != null)
            {
                _responseStream.Close();
                if (_responseStream != httpContentStream)
                {
                    throw new RemotingException(
                              CoreChannel.GetResourceString("Remoting_Http_WrongResponseStream"));
                }

                // we are done with the response stream
                _responseStream = null;
            }
            else
            {
                if (headers == null)
                {
                    headers = new TransportHeaders();
                }

                String serverHeader = (String)headers["Server"];
                if (serverHeader != null)
                {
                    serverHeader = HttpServerTransportSink.ServerHeader + ", " + serverHeader;
                }
                else
                {
                    serverHeader = HttpServerTransportSink.ServerHeader;
                }
                headers["Server"] = serverHeader;

                // Add length to response headers if necessary
                if (!AllowChunkedResponse && (httpContentStream != null))
                {
                    headers["Content-Length"] = httpContentStream.Length.ToString(CultureInfo.InvariantCulture);
                }
                else
                if (httpContentStream == null)
                {
                    headers["Content-Length"] = "0";
                }

                GetResponseStream(statusCode, reasonPhrase, headers);

                // write HTTP content
                if (httpContentStream != null)
                {
                    StreamHelper.CopyStream(httpContentStream, _responseStream);

                    _responseStream.Close();
                    httpContentStream.Close();
                }

                // we are done with the response stream
                _responseStream = null;
            }
        } // SendResponse