Есть ли способ проверить, существует ли имя учетной записи из учетной записи хранения Azure?

#c# #.net #azure #azure-storage-account

Вопрос:

Я играл с учетными записями хранилища из Azure и увидел, что недопустимый AccountName (из строки подключения) не выдает ошибку о том, что AccountName она недопустима, вместо этого время ожидания истекает через 20 секунд. Я использую строку подключения для подключения:

BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);

Я видел некоторые ресурсы, которые blobServiceClient.GetProperties(); могут выдать ошибку, и таким образом получить представление о том, что AccountName это недопустимо, но, как я уже сказал, время ожидания истекает, и необходимость ждать 20 секунд не является опцией для моего приложения, прежде чем возвращать сообщение о том, что AccountName это недопустимо.

Ошибка, которую я получаю, такова Retry failed after 6 tries .

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

Любые идеи, как я могу проверить AccountName , существует ли данный файл в моей учетной записи хранения или нет, из .NET?

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

1.Существует команда CLI и базовый API REST. Это помогло бы вам? docs.microsoft.com/en-us/cli/azure/storage/…docs.microsoft.com/en-us/rest/api/storagerp/storage-accounts /…

2. Хм, значит, я действительно не могу использовать его из библиотеки C#? Спасибо за ссылки на @silent

3. не уверен, что это также есть в SDK, если честно

Ответ №1:

Любые идеи, как я могу проверить, существует ли данное имя учетной записи в моей учетной записи хранения или нет, из .NET?

Вы можете использовать Microsoft.Azure.Management.Storage пространство имен для выполнения операций, связанных с управлением учетной записью хранения, определенным StorageAccountsOperationsExtensions.GetPropertiesAsync(IStorageAccountsOperations, String, String, Nullable<StorageAccountExpand>, CancellationToken) способом, чтобы узнать, существует ли учетная запись хранения в вашей подписке Azure или нет.

Одна из проблем, с которой вы сталкиваетесь, заключается в том, что получение свойств вашей учетной записи с помощью метода занимает много времени BlobServiceClient.GetProperties() . Вы можете значительно сократить это время, сократив количество выходов на пенсию, выполняемых с помощью SDK. По умолчанию SDK повторяет повторяемую операцию 5 раз (в общей сложности 6 раз). Однако вы можете настроить политику повторных попыток, чтобы не повторять операцию. Например, пожалуйста, ознакомьтесь с приведенным ниже кодом:

 BlobClientOptions clientOptions = new BlobClientOptions()
{
    Retry =
    {
        MaxRetries = 0
    }
};
BlobServiceClient serviceClient = new BlobServiceClient(connectionString, clientOptions);
var properties = await serviceClient.GetPropertiesAsync();
 

Приведенный выше код попытается получить свойства только один раз (без повторных попыток). Вам нужно будет зафиксировать любое исключение, которое создает этот GetPropertiesAsync метод, и определить, не существует ли учетная запись хранения, неверен ли ключ учетной записи хранения или код не удался по каким-либо другим причинам.