Skip to content

Asynchronous ZipArchive stream methods still call synchronous methods of the underlying stream #107171

Closed
@serggusak

Description

@serggusak

Description

Asynchronous ZipArchive stream methods still call synchronous methods of the underlying stream:

using (var zip = new ZipArchive(/new WriteOnlyStreamWrapper(/httpContext.Response.Body/)/, ZipArchiveMode.Create))
await using (Stream strm = zip.CreateEntry("response").Open())
{
await strm.WriteAsync(bytes); // Synchronous operations are disallowed exception here
}

If I debug using my wrapper, I can see that Flush is called on the stream instead of FlushAsync

Reproduction Steps

Write some code that creates a ZipArchive for writing around a stream that supports only asynchronous operations, creates an entry, open it and write some data to the stream asynchronously.

Expected behavior

The data has been successfully written

Actual behavior

Get "Synchronous operations are disallowed" exception because the framework calls a synchronous method (Flush)

Regression?

No response

Known Workarounds

No response

Configuration

.Net 8, Windows, x64

Other information

No response

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions