Skip to content

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

Open
@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

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions