如何获取 BLOB 并将其添加到我的配置中?

How can I get a BLOB and add it to my configuration?

我有一个 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 信息 运行? 还是我把自己编进了一个角落?

您可以尝试使用 Blob URI 和 Blob 客户端创建 CloudBlockBlob 的实例,方法如下:

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

或使用 Blob URI 和存储凭证创建 CloudBlockBlob 的实例,方法如下:

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