HttpServer.HttpResponse.SendHeaders C# (CSharp) Method

SendHeaders() public method

Send headers to the client.
If headers already been sent.
public SendHeaders ( ) : void
return void
        public void SendHeaders()
        {
            if (HeadersSent)
                throw new InvalidOperationException("Header have already been sent.");

            _headersSent = true;

            if (_headers["Date"] == null)
                _headers["Date"] = DateTime.Now.ToString("r");
            if (_headers["Content-Length"] == null)
                _headers["Content-Length"] = _contentLength == 0 ? Body.Length.ToString() : _contentLength.ToString();
            if (_headers["Content-Type"] == null)
                _headers["Content-Type"] = ContentType;
            if (_headers["Server"] == null)
                _headers["Server"] = "CSharp WebServer";

            if (Connection == ConnectionType.KeepAlive)
            {
                _headers["Keep-Alive"] = "timeout=" + _keepAlive + ", max=" + _keepAlive*20;
                _headers["Connection"] = "keep-alive";
            }
            else
                _headers["Connection"] = "close";

            if (Body.Length != 0)
            {
                if (_headers["Content-Type"] == null)
                    _headers["Content-Type"] = _contentType ?? DefaultContentType;
            }

            StringBuilder sb = new StringBuilder();
            sb.AppendFormat("{0} {1} {2}\r\n", _httpVersion, (int) Status,
                            string.IsNullOrEmpty(Reason) ? Status.ToString() : Reason);

            for (int i = 0; i < _headers.Count; ++i)
            {
                string headerName = _headers.AllKeys[i];
                string[] values =_headers.GetValues(i);
                if (values == null) continue;
                foreach (string value in values)
                    sb.AppendFormat("{0}: {1}\r\n", headerName, value);
            }

            foreach (ResponseCookie cookie in Cookies)
                sb.AppendFormat("Set-Cookie: {0}\r\n", cookie);

            sb.Append("\r\n");

            _context.Send(Encoding.GetBytes(sb.ToString()));
        }