#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
метод, и определить, не существует ли учетная запись хранения, неверен ли ключ учетной записи хранения или код не удался по каким-либо другим причинам.