在 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 是啥?
在 Startup.cs 中使 ConfigureServices 方法异步