Инициализировать хранилище больших двоичных объектов в Startup.cs

#c# #blob #azure-blob-storage

#c# #большой двоичный объект #azure-blob-хранилище

Вопрос:

У меня две разные учетные записи хранения. Мне нужно получить большой двоичный объект из другой учетной записи хранилища и контейнера, а затем отправить ответ после вызова API в контейнер другой учетной записи хранилища.

Мне нужна помощь в том, как инициализировать один и тот же класс хранилища для разных учетных записей и ключей хранилища. Как сделать _accountName и _storageKey обобщить приведенный ниже код?

 private async Task<CloudBlockBlob> GetBlockBlob(string containerName, string blockName)
{
    CloudStorageAccount storageAccount = new CloudStorageAccount(
        new StorageCredentials(_accountName, _storageKey), true);
    var blobContainer = storageAccount.CreateCloudBlobClient().GetContainerReference(containerName);
    await blobContainer.CreateIfNotExistsAsync();
    return blobContainer.GetBlockBlobReference(blockName);
}
 

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

1. Вы хотите отправить данные из одного хранилища в другое? или вы хотите выбрать учетную запись хранилища на основе запроса пользователя?

Ответ №1:

Вы должны сохранить оба значения _accountName и _storageKey в настройках приложения. Затем вы можете создать глобальные переменные для обеих учетных записей хранилища. Например:

 CloudStorageAccount storageAccount1 = new CloudStorageAccount(
                    new StorageCredentials(_accountName1, _storageKey1), true);

CloudStorageAccount storageAccount2 = new CloudStorageAccount(
                    new StorageCredentials(_accountName2, _storageKey2), true);
 

Затем у вас может быть два метода извлечения больших двоичных объектов, как показано ниже:

 private async Task<CloudBlockBlob> GetBlockBlobFrom1(string containerName, string blockName)
        {
            var blobContainer = storageAccount1.CreateCloudBlobClient().GetContainerReference(containerName);
            await blobContainer.CreateIfNotExistsAsync();
            return blobContainer.GetBlockBlobReference(blockName);
        }

private async Task<CloudBlockBlob> GetBlockBlobFrom2(string containerName, string blockName)
        {
            var blobContainer = storageAccount2.CreateCloudBlobClient().GetContainerReference(containerName);
            await blobContainer.CreateIfNotExistsAsync();
            return blobContainer.GetBlockBlobReference(blockName);
        }
 

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

1. Помогает ли это?