#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. Помогает ли это?