Майкрософт.WindowsAzure.Хранение.Исключение StorageException: время ожидания операции истекло

#azure-storage

#azure-хранилище

Вопрос:

У меня есть что-то вроде следующего кода

 using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
private void DownloadFile(CloudBlockBlob blobref , string fileName)
{
 blobref.DownloadToFile( fileName, FileMode.Create);
}
  

Это работает большую часть времени

Затем в один прекрасный день возникает следующая ошибка

 Microsoft.WindowsAzure.Storage.StorageException: The operation has timed out. ---> System.TimeoutException: The operation has timed out.
   at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext) in c:Program Files (x86)Jenkinsworkspacerelease_dotnet_masterLibClassLibraryCommonCoreExecutorExecutor.cs:line 693
   --- End of inner exception stack trace ---
   at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext) in c:Program Files (x86)Jenkinsworkspacerelease_dotnet_masterLibClassLibraryCommonCoreExecutorExecutor.cs:line 604
   at Microsoft.WindowsAzure.Storage.Blob.CloudBlob.DownloadToStream(Stream target, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext) in c:Program Files (x86)Jenkinsworkspacerelease_dotnet_masterLibClassLibraryCommonBlobCloudBlob.cs:line 235
   at Microsoft.WindowsAzure.Storage.Blob.CloudBlob.DownloadToFile(String path, FileMode mode, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext) 
  

Решение, похоже, заключается в повторной генерации ключа хранилища

Есть ли способ предотвратить это?

Комментарии:

1. Не могли бы вы поделиться значением StorageException.RequestInformation.ExtendedErrorInformation ? Это похоже на временные внутренние ошибки сервера, которые не могут быть устранены путем регенерации ключа.

2. Похоже, что изменение ключа исправляет это. Я добавил больше протоколирования, чтобы перехватить в ExtendedErrorInformation следующий раз.

3. Нет, изменение ключа не может исправить это. Это временная ошибка, поэтому она просто исчезает без каких-либо действий с вашей стороны. Я бы посоветовал вам войти в StorageException.RequestInformation.ExtendedErrorInformation систему now, чтобы вы могли увидеть сведения об ошибке, когда она возникнет снова.