<PackageReference Include="Azure.Storage.Blobs" Version="12.23.0-beta.2" />

ExpectContinueOnThrottlePolicy

using Azure.Core; using System; using System.Threading; namespace Azure.Storage { internal class ExpectContinueOnThrottlePolicy { 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) { long num = default(long); if ((int)message.get_Request().get_Content() != 0 && (!message.get_Request().get_Content().TryComputeLength(ref num) || num >= ContentLengthThreshold) && !CompatSwitches.DisableExpectContinueHeader) { long num2 = Interlocked.Read(ref _lastThrottleTicks); if (DateTimeOffset.UtcNow.Ticks - num2 < _throttleIntervalTicks) { RequestHeaders headers = message.get_Request().get_Headers(); headers.SetValue("Expect", "100-continue"); } } } public override void OnReceivedResponse(HttpMessage message) { this.OnReceivedResponse(message); if (message.get_HasResponse() && (message.get_Response().get_Status() == 429 || message.get_Response().get_Status() == 500 || message.get_Response().get_Status() == 503)) Interlocked.Exchange(ref _lastThrottleTicks, DateTimeOffset.UtcNow.Ticks); } public ExpectContinueOnThrottlePolicy() : this() { } } }