【问题标题】:How can I get a BLOB and add it to my configuration?如何获取 BLOB 并将其添加到我的配置中?
【发布时间】:2020-08-15 12:02:34
【问题描述】:

我有一个 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 信息? 还是我把自己编程到了这里的一个角落?

【问题讨论】:

  • 两个问题:1)我假设您的AZURE_STORAGE_CONNECTION_STRING 来自设置。正确的? 2) 你的blobUri 怎么样?是https://account.blob.core.windows.net/container-name/blob-name吗?
  • @GauravMantri-AIS 1) 它来自我代码中的硬编码字符串。 2) 是的,这正是它的样子。
  • 谢谢。如果我理解正确,您会想要使用这个 blob url 和连接字符串来获取 blob 内容。对吗?
  • 是的,没错。
  • 提供了答案。希望这就是您要找的。​​span>

标签: c# azure configuration-files test-data


【解决方案1】:

您可以尝试使用 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;
}

【讨论】:

  • 看起来不错。我会将这些字符串放入本地 json 文件中,并使用您列出的方法。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-20
  • 1970-01-01
相关资源
最近更新 更多