首页 > 解决方案 > 如何获取 BLOB 并将其添加到我的配置中?

问题描述

我有一个 web api,它使用一堆 appSettings 文件来加载测试数据。我想将该数据的位置转移到 Azure Blob。基于测试基础架构,我想将 Blob 转换为 IConfiguration 对象。

为此,我想在 ConfigurationBuilder 上使用 AddJsonStream。

我创建了这个方法来获取 blob 并将其转换为流:

    public static Stream GetBlobAsStream(Uri blobURI)
    {
        var storageAccount = CloudStorageAccount.Parse(AZURE_STORAGE_CONNECTION_STRING);
        var cloudBlobClient = storageAccount.CreateCloudBlobClient();
        var cloudBlobContainer = cloudBlobClient.GetContainerReference(blobContainer);
        var cloudBlob = cloudBlobContainer.GetBlockBlobReference(blobName);
        var stream = cloudBlob.OpenRead();
        return stream;
    }

现在这个方法使用了一堆硬编码的常量——我想删除它们。如何删除硬编码,并根据运行环境找到所需的 azure 信息?还是我把自己编程到了这里的一个角落?

标签: c#azureconfiguration-filestest-data

解决方案


您可以尝试通过执行以下操作来创建CloudBlockBlob使用 Blob URI 和 Blob 客户端的实例:

public static Stream GetBlobAsStream(Uri blobURI)
{
    var storageAccount = CloudStorageAccount.Parse(AZURE_STORAGE_CONNECTION_STRING);
    var cloudBlobClient = storageAccount.CreateCloudBlobClient();
    var cloudBlob = new CloudBlockBlob(blobURI, cloudBlobClient);
    var stream = cloudBlob.OpenRead();
    return stream;
}

或通过执行以下操作创建CloudBlockBlob使用 Blob URI 和存储凭据的实例:

public static Stream GetBlobAsStream(Uri blobURI)
{
    var storageAccount = CloudStorageAccount.Parse(AZURE_STORAGE_CONNECTION_STRING);
    var cloudBlob = new CloudBlockBlob(blobURI, storageAccount.Credentials);
    var stream = cloudBlob.OpenRead();
    return stream;
}

推荐阅读