Task ServeRangeContentAsync( IHttpRequest request, IHttpResponse response, string pathToContentFile) { // Get and validate the range var rangeHeaderValie = request.Header[HttpKeys.Range]; if (rangeHeaderValie.Length >= MaxRangeHeaderValueLength) { throw new HttpPayloadTooLargeException( $"Range header value length reached maximum value of {MaxRangeHeaderValueLength}" ); } var requestedRanges = StaticRangeValueParserUtils.GetRequestedRanges(rangeHeaderValie); if (requestedRanges.Length == 0 || requestedRanges.Length > MaxRangeCount) { throw new StaticRangeNotSatisfiableException(); } // Range is good, from this point forward, // we will be serving partial content. response.Header.StatusCode = 206; if (requestedRanges.Length == 1) { return(_staticFileServer.WriteAsync( request, requestedRanges[0], response, pathToContentFile, _tcpSettings.ReadWriteBufferSize )); } else { return(_staticFileServer.WriteAsync( request, requestedRanges, response, pathToContentFile, _tcpSettings.ReadWriteBufferSize )); } }