<PackageReference Include="Azure.Storage.Blobs" Version="12.25.1" />

ExpectContinueOnThrottlePolicy

using Azure.Core; using Azure.Core.Pipeline; using System; using System.Threading; namespace Azure.Storage { internal class ExpectContinueOnThrottlePolicy : HttpPipelineSynchronousPolicy { private long _lastThrottleTicks; private long _throttleIntervalTicks = 600000000; public TimeSpan ThrottleInterval { get { return TimeSpan.FromTicks(_throttleIntervalTicks); } set { _throttleIntervalTicks = value.Ticks; } } public long ContentLengthThreshold { get; set; } public override void OnSendingRequest(HttpMessage message) { if (message.Request.Content != null && (!message.Request.Content.TryComputeLength(out long length) || length >= ContentLengthThreshold) && !CompatSwitches.DisableExpectContinueHeader) { long num = Interlocked.Read(ref _lastThrottleTicks); if (DateTimeOffset.UtcNow.Ticks - num < _throttleIntervalTicks) message.Request.Headers.SetValue("Expect", "100-continue"); } } public override void OnReceivedResponse(HttpMessage message) { base.OnReceivedResponse(message); if (message.HasResponse && (message.Response.Status == 429 || message.Response.Status == 500 || message.Response.Status == 503)) Interlocked.Exchange(ref _lastThrottleTicks, DateTimeOffset.UtcNow.Ticks); } } }