private async Task DecompressRequest(IOwinContext context, IList<string> tmpContentEncoding, CancellationToken cancellationToken) { var tmpCompressor = GetCompressor(tmpContentEncoding); if (tmpCompressor == null) { throw new Exception(string.Format("Unable to decompress request, no valid compressor found for '{0}'", tmpContentEncoding.ToStringExt())); } var tmpDestination = new MemoryStream(); using (var tmpRequestBody = context.Request.Body) { await tmpCompressor.Decompress(tmpRequestBody, tmpDestination, cancellationToken); } //Rewind Stream, so Next() can read it tmpDestination.Position = 0; context.Request.Body = tmpDestination; }