如何实现 blob 存储访问超时和显示消息

How to implement blob storage access timeout and show message

我想在 blob 上传和下载花费大量时间时向最终用户显示消息。我找到了有用的博客 here

简单的线性重试策略

 public static RetryPolicy LinearRetry(int retryCount, TimeSpan intervalBetweenRetries)
{
  return () =>
  {
       return (int currentRetryCount, Exception lastException, out TimeSpan retryInterval) =>
       { 
           // Do custom work here               
           // Set backoff
           retryInterval = intervalBetweenRetries;    
           // Decide if we should retry, return bool
           return currentRetryCount < retryCount;          

       };
  };

}

但在这里我没有得到如何在重试时将响应发送回用户。这是正确的方法还是其他任何方法。请推荐

OperationContext class in Storage Client Library has an event called Retrying 您可以使用并将消息发送回客户端。

例如,我创建了一个简单的控制台应用程序,它试图创建一个 blob 容器。当我 运行 这个应用程序时,我特意关闭了 Internet 访问,以便我可以模拟重试操作的情况。然后在这个事件消费者中,我简单地写回控制台。您可以简单地从那里引发另一个事件,将消息发送回您的客户。

        var requestOptions = new BlobRequestOptions()
        {
            RetryPolicy = new ExponentialRetry(),
        };
        var operationContext = new OperationContext();
        operationContext.Retrying += (sender, args) =>
        {
            Console.WriteLine("I'm retrying ....");
        };
        var cloudStorageAccount = new CloudStorageAccount(new StorageCredentials(accountName, accountKey), true);
        var blobClient = cloudStorageAccount.CreateCloudBlobClient();
        var container = blobClient.GetContainerReference("test");
        container.CreateIfNotExists(requestOptions, operationContext);