gpt4 book ai didi

Azure CloudBlobDirectory 子目录

转载 作者:行者123 更新时间:2023-12-03 05:08:20 30 4
gpt4 key购买 nike

我们有一个由离岸外包开发公司开发的旧应用程序,它仍在使用 Azure 存储客户端 1.7。

因此,我会在此版本停止工作之前对其进行更新。

有一个单元测试我无法通过。

    [TestMethod()]
public void CloudBlobDirectoryTest()
{
CloudBlobClient cloudBlobClient = _cloudStorageAccount.CreateCloudBlobClient();
string filePath = "http://127.0.0.1:10000/devstoreaccount1/store1/BCAUK_Reports.sql";
string expected = "store1";
CloudBlobDirectory actual = AzureUtil.CloudBlobDirectory(cloudBlobClient, filePath);
Assert.AreEqual(expected, actual.Container.Name);
}

使用的方法如下所示:

    public static CloudBlobDirectory CloudBlobDirectory(CloudBlobClient cloudBlobClient, string filePath)
{
CloudBlobDirectory cloudBlobDirectory = cloudBlobClient.GetBlobDirectoryReference(filePath);
return cloudBlobDirectory;
}

我对此进行了重构,以适应新的存储 API:

    public static CloudBlobDirectory CloudBlobDirectory(CloudBlobClient cloudBlobClient, string filePath)
{
Uri path = new Uri(filePath);
string relativePath = "/store1/";

CloudBlobContainer container = cloudBlobClient.GetContainerReference(path.Segments[1]);
CloudBlobDirectory cloudBlobDirectory = container.GetDirectoryReference(relativePath);

return cloudBlobDirectory;
}

我无法确定 relativePath 的值应该是什么,以及如何以可重现的方式获取该值。

最佳答案

这是一段奇怪的代码片段。使用目录的方式对我来说并没有什么意义,因为 store1 是一个容器,而 BCAUK_Reports.sql 是一个 blob——即没有任何目录。此外,模拟器字符串的硬编码看起来非常奇怪,因为这意味着此测试不会测试与您可能使用的实时服务相关的任何内容。我猜这些奇怪的地方就是移植不好的原因。您能否解释一下您打算测试什么?

话虽这么说,如果我猜你想要做什么,那就是获取 blob 的父目录和容器。如果您只是执行 CloudBlockBlob(filepath, client.Credentials) 之类的操作,然后对 blob 的容器引用执行 blob.Container 操作,或者对 blob 的父目录执行 blob.Parent 操作,则可能可行。

关于Azure CloudBlobDirectory 子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32715253/

30 4 0