@@ -89,7 +89,7 @@ public override async Task<string> UploadAsync(string payLoad, CancellationToken
8989 // using MemoryStream payloadStream = new(payloadBuffer, writable: false);
9090
9191 // await payloadStream.CopyToAsync(compressedBlobStream, bufferSize: DefaultCopyBufferSize, cancellationToken);
92- await compressedBlobStream . WriteAsync ( payloadBuffer , 0 , payloadBuffer . Length , cancellationToken ) ;
92+ await WritePayloadAsync ( payloadBuffer , compressedBlobStream , cancellationToken ) ;
9393 await compressedBlobStream . FlushAsync ( cancellationToken ) ;
9494 await blobStream . FlushAsync ( cancellationToken ) ;
9595 }
@@ -99,7 +99,7 @@ public override async Task<string> UploadAsync(string payLoad, CancellationToken
9999
100100 // using MemoryStream payloadStream = new(payloadBuffer, writable: false);
101101 // await payloadStream.CopyToAsync(blobStream, bufferSize: DefaultCopyBufferSize, cancellationToken);
102- await blobStream . WriteAsync ( payloadBuffer , 0 , payloadBuffer . Length , cancellationToken ) ;
102+ await WritePayloadAsync ( payloadBuffer , blobStream , cancellationToken ) ;
103103 await blobStream . FlushAsync ( cancellationToken ) ;
104104 }
105105
@@ -126,11 +126,11 @@ public override async Task<string> DownloadAsync(string token, CancellationToken
126126 {
127127 using GZipStream decompressed = new ( contentStream , CompressionMode . Decompress ) ;
128128 using StreamReader reader = new ( decompressed , Encoding . UTF8 ) ;
129- return await reader . ReadToEndAsync ( ) ;
129+ return await ReadToEndAsync ( reader , cancellationToken ) ;
130130 }
131131
132132 using StreamReader uncompressedReader = new ( contentStream , Encoding . UTF8 ) ;
133- return await uncompressedReader . ReadToEndAsync ( ) ;
133+ return await ReadToEndAsync ( uncompressedReader , cancellationToken ) ;
134134 }
135135
136136 /// <inheritdoc/>
@@ -144,6 +144,27 @@ public override bool IsKnownPayloadToken(string value)
144144 return value . StartsWith ( TokenPrefix , StringComparison . Ordinal ) ;
145145 }
146146
147+ static async Task WritePayloadAsync ( byte [ ] payloadBuffer , Stream target , CancellationToken cancellationToken )
148+ {
149+ #if NETSTANDARD2_0
150+ await target . WriteAsync ( payloadBuffer , 0 , payloadBuffer . Length , cancellationToken ) . ConfigureAwait ( false ) ;
151+ #else
152+ await target . WriteAsync ( payloadBuffer . AsMemory ( 0 , payloadBuffer . Length ) , cancellationToken ) . ConfigureAwait ( false ) ;
153+ #endif
154+ }
155+
156+ static async Task < string > ReadToEndAsync ( StreamReader reader , CancellationToken cancellationToken )
157+ {
158+ #if NETSTANDARD2_0
159+ cancellationToken . ThrowIfCancellationRequested ( ) ;
160+ return await reader . ReadToEndAsync ( ) . ConfigureAwait ( false ) ;
161+ #elif NET8_0_OR_GREATER
162+ return await reader . ReadToEndAsync ( cancellationToken ) . ConfigureAwait ( false ) ;
163+ #else
164+ return await reader . ReadToEndAsync ( ) . WaitAsync ( cancellationToken ) . ConfigureAwait ( false ) ;
165+ #endif
166+ }
167+
147168 static string EncodeToken ( string container , string name ) => $ "blob:v1:{ container } :{ name } ";
148169
149170 static ( string Container , string Name ) DecodeToken ( string token )
0 commit comments