static HttpContent GetStreamContent(HttpRequestBase requestBase) { if (true) { return(new LazyStreamContent(() => { if (requestBase.ReadEntityBodyMode == ReadEntityBodyMode.None) { return new SeekableBufferedRequestStream(requestBase); } if (requestBase.ReadEntityBodyMode == ReadEntityBodyMode.Classic) { requestBase.InputStream.Position = 0; return requestBase.InputStream; } if (requestBase.ReadEntityBodyMode == ReadEntityBodyMode.Buffered) { if (requestBase.GetBufferedInputStream().Position > 0) { // If GetBufferedInputStream() was completely read, we can continue accessing it via Request.InputStream. // If it was partially read, accessing InputStream will throw, but at that point we have no // way of recovering. requestBase.InputStream.Position = 0; return requestBase.InputStream; } return new SeekableBufferedRequestStream(requestBase); } throw new InvalidOperationException("Request body already read in mode."); })); } }
public SeekableBufferedRequestStream(HttpRequestBase request) { if (request == null) { throw new ArgumentNullException("request"); } _request = request; InnerStream = request.GetBufferedInputStream(); }
public SeekableBufferedRequestStream(HttpRequestBase request) { if (request == null) { throw new ArgumentNullException("request"); } _request = request; InnerStream = request.GetBufferedInputStream(); }
// // Summary: // Gets a System.IO.Stream object that can be used to read the incoming HTTP entity // body. // // Returns: // A System.IO.Stream object that can be used to read the incoming HTTP entity body. // // Exceptions: // T:System.Web.HttpException: // The request's entity body has already been loaded and parsed. Examples of properties // that cause the entity body to be loaded and parsed include the following: The // System.Web.HttpRequest.Form property.The System.Web.HttpRequest.Files property.The // System.Web.HttpRequest.InputStream property.The System.Web.HttpRequest.GetBufferlessInputStream // method.To avoid this exception, call the System.Web.HttpRequest.ReadEntityBodyMode // method first. This exception is also thrown if the client disconnects while the // entity body is being read. public Stream GetBufferedInputStream() { if (_httpRequest != null) { return(_httpRequest.GetBufferedInputStream()); } else { return(_httpRequestBase.GetBufferedInputStream()); } }
private void ResolveStream() { if (_stream != null) { return; } switch (_request.ReadEntityBodyMode) { case ReadEntityBodyMode.None: _stream = _preferBuffered ? _request.GetBufferedInputStream() : _request.GetBufferlessInputStream(); _bufferOnSeek = _preferBuffered; break; case ReadEntityBodyMode.Buffered: _stream = _request.GetBufferedInputStream(); try { // Fully consumed? Switch to Seekable InputStream. _stream = _request.InputStream; } catch (InvalidOperationException) { // The stream is starting in a partially read state. _bufferOnSeek = _preferBuffered; } break; case ReadEntityBodyMode.Classic: _stream = _request.InputStream; break; case ReadEntityBodyMode.Bufferless: _stream = _request.GetBufferlessInputStream(); break; default: throw new NotImplementedException(_request.ReadEntityBodyMode.ToString()); } }
private void AuthenticateUsingSharedSecret(HttpRequestBase request) { using (var sr = new StreamReader(request.GetBufferedInputStream(), request.ContentEncoding)) { var bodyContent = sr.ReadToEnd(); if (!bodyContent.StartsWith("secret:")) { return; } var secret = bodyContent.Replace("secret:", string.Empty).Trim(); if (secret != this._sharedKey) { return; } } // secretトークンが一致 CreateClaimsForScheduler(); }
/// <summary> /// Gets the stream after resetting by calling the GetBufferedInputStream() /// </summary> /// <param name="request">The request.</param> /// <returns></returns> /// <exception cref="System.ArgumentNullException">request</exception> private static Stream GetStreamAfterResetting([NotNull] HttpRequestBase request) { if (null == request) { throw new ArgumentNullException("request"); } try { // See http://stackoverflow.com/questions/17602845/post-error-either-binaryread-form-files-or-inputstream-was-accessed-before-t var bufferedStream = request.GetBufferedInputStream(); if (null == bufferedStream) { return(null); } new StreamReader(bufferedStream).ReadToEnd(); } catch (HttpException) { // let's not log in the logger to avoid potential infinite loop } return(request.InputStream); }
private static HttpContent GetStreamContent(HttpRequestBase requestBase, bool bufferInput) { if (bufferInput) { return(new LazyStreamContent(() => { if (requestBase.ReadEntityBodyMode == ReadEntityBodyMode.None) { return new SeekableBufferedRequestStream(requestBase); } else if (requestBase.ReadEntityBodyMode == ReadEntityBodyMode.Classic) { requestBase.InputStream.Position = 0; return requestBase.InputStream; } else if (requestBase.ReadEntityBodyMode == ReadEntityBodyMode.Buffered) { if (requestBase.GetBufferedInputStream().Position > 0) { // If GetBufferedInputStream() was completely read, we can continue accessing it via Request.InputStream. // If it was partially read, accessing InputStream will throw, but at that point we have no // way of recovering. requestBase.InputStream.Position = 0; return requestBase.InputStream; } return new SeekableBufferedRequestStream(requestBase); } else { Contract.Assert(requestBase.ReadEntityBodyMode == ReadEntityBodyMode.Bufferless); throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, SRResources.RequestBodyAlreadyReadInMode, ReadEntityBodyMode.Bufferless)); } })); } else { return(new LazyStreamContent(() => { if (requestBase.ReadEntityBodyMode == ReadEntityBodyMode.None) { return requestBase.GetBufferlessInputStream(); } else if (requestBase.ReadEntityBodyMode == ReadEntityBodyMode.Classic) { // The user intended that the request be read in a bufferless manner, but we are starting with a buffered stream. // To maintain compatibility with legacy behavior, we'll throw in this case. throw new InvalidOperationException(SRResources.RequestStreamCannotBeReadBufferless); } else if (requestBase.ReadEntityBodyMode == ReadEntityBodyMode.Bufferless) { Stream bufferlessInputStream = requestBase.GetBufferlessInputStream(); if (bufferlessInputStream.Position > 0) { throw new InvalidOperationException(SRResources.RequestBodyAlreadyRead); } return bufferlessInputStream; } else { Contract.Assert(requestBase.ReadEntityBodyMode == ReadEntityBodyMode.Buffered); throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, SRResources.RequestBodyAlreadyReadInMode, ReadEntityBodyMode.Buffered)); } })); } }
private static HttpContent GetStreamContent(HttpRequestBase requestBase, bool bufferInput) { if (bufferInput) { return new LazyStreamContent(() => { if (requestBase.ReadEntityBodyMode == ReadEntityBodyMode.None) { return new SeekableBufferedRequestStream(requestBase); } else if (requestBase.ReadEntityBodyMode == ReadEntityBodyMode.Classic) { requestBase.InputStream.Position = 0; return requestBase.InputStream; } else if (requestBase.ReadEntityBodyMode == ReadEntityBodyMode.Buffered) { if (requestBase.GetBufferedInputStream().Position > 0) { // If GetBufferedInputStream() was completely read, we can continue accessing it via Request.InputStream. // If it was partially read, accessing InputStream will throw, but at that point we have no // way of recovering. requestBase.InputStream.Position = 0; return requestBase.InputStream; } return new SeekableBufferedRequestStream(requestBase); } else { Contract.Assert(requestBase.ReadEntityBodyMode == ReadEntityBodyMode.Bufferless); throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, SRResources.RequestBodyAlreadyReadInMode, ReadEntityBodyMode.Bufferless)); } }); } else { return new LazyStreamContent(() => { if (requestBase.ReadEntityBodyMode == ReadEntityBodyMode.None) { return requestBase.GetBufferlessInputStream(); } else if (requestBase.ReadEntityBodyMode == ReadEntityBodyMode.Classic) { // The user intended that the request be read in a bufferless manner, but we are starting with a buffered stream. // To maintain compatibility with legacy behavior, we'll throw in this case. throw new InvalidOperationException(SRResources.RequestStreamCannotBeReadBufferless); } else if (requestBase.ReadEntityBodyMode == ReadEntityBodyMode.Bufferless) { Stream bufferlessInputStream = requestBase.GetBufferlessInputStream(); if (bufferlessInputStream.Position > 0) { throw new InvalidOperationException(SRResources.RequestBodyAlreadyRead); } return bufferlessInputStream; } else { Contract.Assert(requestBase.ReadEntityBodyMode == ReadEntityBodyMode.Buffered); throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture, SRResources.RequestBodyAlreadyReadInMode, ReadEntityBodyMode.Buffered)); } }); } }
public override Stream GetBufferedInputStream() => request.GetBufferedInputStream();