public static HttpRequest EnableRewind(this HttpRequest request, int bufferThreshold = DefaultBufferThreshold, long?bufferLimit = null) { if (request == null) { throw new ArgumentNullException(nameof(request)); } var body = request.Body; if (!body.CanSeek) { var fileStream = new FileBufferingReadStream(body, bufferThreshold, bufferLimit, _getTempDirectory); if (request.ContentLength.HasValue && request.ContentLength > 0) { fileStream.SetLength(request.ContentLength.Value); } request.Body = fileStream; request.HttpContext.Response.RegisterForDispose(fileStream); } return(request); }