Exemple #1
0
        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);
        }