我正在开发一个社交网络应用程序。
我想在azure存储中为每个加入社交网络的用户(客户端)创建一个容器,这意味着user1有一个名为container 1的容器,在容器1中将有一个xml格式的用户1个人资料和用户1的个人资料图片。
类似地,对于user2,将在azure blob存储中创建容器2,然后将用户2的配置文件保存为xml格式和用户2的配置文件图片,假设对于10个用户,将有10个容器。
如果我想要列出存储在Azure存储中的所有9个用户的信息,这些信息存储在来自用户客户端1的不同9个容器中,我该如何做到?
我正在使用webservice,但我面临的挑战是如何收集位于9个不同容器中的所有9个用户配置文件信息。
发布于 2011-12-11 04:17:11
下面的代码应该可以解决这个问题-
CloudStorageAccount account =
CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
// We need to access blobs now, so create a CloudBlobClient
CloudBlobClient blobClient = account.CreateCloudBlobClient();
IEnumerable<CloudBlobContainer> containers = blobClient.ListContainers();
发布于 2018-07-14 04:21:35
对于较新版本的Microsoft.WindowsAzure.Storage,,使用CloudBlobClient.ListContainersSegmentedAsync
方法的正确变体。示例用法如下:
private static async Task<IEnumerable<CloudBlobContainer>> ListContainersAsync(CloudBlobClient cloudBlobClient)
{
BlobContinuationToken continuationToken = null;
var containers = new List<CloudBlobContainer>();
do
{
ContainerResultSegment response = await cloudBlobClient.ListContainersSegmentedAsync(continuationToken);
continuationToken = response.ContinuationToken;
containers.AddRange(response.Results);
} while (continuationToken != null);
return containers;
}
上述方法的用法如下:
string connectionString = "<your connection string>";
CloudStorageAccount.TryParse(connectionString, out CloudStorageAccount storageAccount);
if (storageAccount == null)
{
Console.WriteLine("Connection string did not work");
}
CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();
var containers = await ListContainersAsync(cloudBlobClient);
或者,您可以创建一个扩展方法,如下所示:
public static class CloudBlobClientExtension
{
public static async Task<IEnumerable<CloudBlobContainer>> ListContainersAsync(this CloudBlobClient cloudBlobClient)
{
BlobContinuationToken continuationToken = null;
var containers = new List<CloudBlobContainer>();
do
{
ContainerResultSegment response = await cloudBlobClient.ListContainersSegmentedAsync(continuationToken);
continuationToken = response.ContinuationToken;
containers.AddRange(response.Results);
} while (continuationToken != null);
return containers;
}
}
上述扩展方法的用法如下:
string connectionString = "<your connection string>";
CloudStorageAccount.TryParse(connectionString, out CloudStorageAccount storageAccount);
if (storageAccount == null)
{
Console.WriteLine("Connection string did not work");
}
CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();
IEnumerable<CloudBlobContainer> containers = await cloudBlobClient.ListContainersAsync();
有关更多详细信息,请参阅MSDN和Balkan's Blog
对于较旧的Azure存储版本,请使用CloudBlobClient.ListContainers
方法。示例用法如下:
string connectionString = "<your connection string>";
CloudStorageAccount.TryParse(connectionString, out CloudStorageAccount storageAccount);
if (storageAccount == null)
{
Console.WriteLine("Connection string did not work");
}
CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();
var containers = cloudBlobClient.ListContainers();
发布于 2017-10-26 19:03:28
CloudStorageAccount account =
CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
// We need to access blobs now, so create a CloudBlobClient
var blobClient = account.CreateCloudBlobClient();
IEnumerable<CloudBlobContainer> containers = blobClient.ListContainers();
// This will return you list of containers
var containerList = containers.Select(e => e.Name).Tolist();
https://stackoverflow.com/questions/8458720
复制相似问题