示例#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.RequestStream;

            if (!body.CanSeek)
            {
                var fileStream = new FileBufferingReadStream(body, bufferThreshold, bufferLimit, _getTempDirectory);
                request.RequestStream = fileStream;
                request.HttpContext.Response.RegisterForDispose(fileStream);
            }
            return(request);
        }
示例#2
0
        public static MultipartSection EnableRewind(this MultipartSection section, Action <IDisposable> registerForDispose,
                                                    int bufferThreshold = DefaultBufferThreshold, long?bufferLimit = null)
        {
            if (section == null)
            {
                throw new ArgumentNullException(nameof(section));
            }
            if (registerForDispose == null)
            {
                throw new ArgumentNullException(nameof(registerForDispose));
            }

            var body = section.Body;

            if (!body.CanSeek)
            {
                var fileStream = new FileBufferingReadStream(body, bufferThreshold, bufferLimit, _getTempDirectory);
                section.Body = fileStream;
                registerForDispose(fileStream);
            }
            return(section);
        }