private bool LookupFileInfo(
            PathString subPath,
            string contentType,
            out StaticFileInfo staticFileInfo)
        {
            var fileInfo = _fileProvider.GetFileInfo(subPath.Value);

            if (fileInfo.Exists)
            {
                var length = fileInfo.Length;

                DateTimeOffset last = fileInfo.LastModified;

                // Truncate to the second.
                var lastModified = new DateTimeOffset(
                    last.Year, last.Month, last.Day, last.Hour,
                    last.Minute, last.Second, last.Offset)
                                   .ToUniversalTime();

                long etagHash = lastModified.ToFileTime() ^ length;
                var  etag     = new EntityTagHeaderValue('\"' + Convert.ToString(etagHash, 16) + '\"');

                staticFileInfo = new StaticFileInfo(fileInfo, etag, contentType);
                return(true);
            }

            staticFileInfo = default;
            return(false);
        }
        private async Task SendAsync(HttpContext context, StaticFileInfo fileInfo)
        {
            SetCompressionMode(context);
            context.Response.StatusCode    = 200;
            context.Response.ContentLength = fileInfo.File.Length;
            context.Response.ContentType   = fileInfo.ContentType;

            ResponseHeaders headers = context.Response.GetTypedHeaders();

            headers.LastModified = fileInfo.File.LastModified;
            headers.ETag         = fileInfo.EntityTagHeader;
            headers.Headers[HeaderNames.AcceptRanges] = "bytes";

            try
            {
                await context.Response.SendFileAsync(
                    fileInfo.File,
                    0,
                    fileInfo.File.Length,
                    context.RequestAborted);
            }
            catch (OperationCanceledException)
            {
                context.Abort();
            }
        }