在 Startup.cs 中初始化 Blob 存储

Posted

技术标签:

【中文标题】在 Startup.cs 中初始化 Blob 存储【英文标题】:Initialize Blob storage in Startup.cs 【发布时间】:2021-04-23 17:13:13 【问题描述】:

我有两个不同的存储帐户。我需要从不同的存储帐户和容器中获取 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】:

您应该在应用设置中保存_accountName_storageKey 的值。然后,您可以为两个存储帐户创建全局变量。例如:

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

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

然后,您可以有两种获取 Blob 的方法,如下所示:

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);
        

【讨论】:

这有帮助吗?

以上是关于在 Startup.cs 中初始化 Blob 存储的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core 中的通用存储库,Startup.cs 中的每个表没有单独的 AddScoped 行?

ASP .NET MVC 5 中使用的 Startup.Auth.cs 和 Startup.cs 是啥?

在 .NET 6 项目中使用 Startup.cs

在 Startup.cs 中使 ConfigureServices 方法异步

在 .NET 6 中使用 Startup.cs 更简洁的方法

从 startup.cs 检查令牌有效性