如何在Silverlight应用程序中显示Container的Azure blob列表?

时间:2012-01-25 22:59:28

标签: silverlight azure-storage-blobs

如何在Silverlight应用程序中显示Container的Azure blob列表?

我知道如何在常规.Net中执行此操作,但我需要在Silverlight中 。 我可以上传,但我想显示已上传内容的列表

像这样的东西,但对于Silverlight:

CloudStorageAccount account =
            CloudStorageAccount.FromConfigurationSetting("DataConnectionString");

CloudBlobClient blobClient = account.CreateCloudBlobClient();

IEnumerable<CloudBlobContainer> containers = blobClient.ListContainers()

由于

2 个答案:

答案 0 :(得分:1)

有两种与Azure Blob存储通信的方式:

  1. 基于.NET的API - 这是您在常规.NET应用程序中使用的API - 但是这个不能在Silverlight应用程序中使用
  2. RESTfull HTTP API - 这是您可以直接从Silverlight
  3. 使用的那个

    但是没有内置库。您必须自己编写HTTP请求。这可能有点复杂,看起来像这样:

    private void ListFiles()
        {
            var uri = String.Format("{0}{1}", _containerUrl, "?restype=container&comp=list&include=snapshots&include=metadata");
    
            _webRequest = (HttpWebRequest)WebRequestCreator.ClientHttp.Create(new Uri(uri));
            _webRequest.BeginGetResponse(EndListFiles, Guid.NewGuid().ToString());
        }
    
        private void EndListFiles(IAsyncResult result)
        {
            var doc = _webRequest.EndGetResponse(result);
    
            var xDoc = XDocument.Load(doc.GetResponseStream());
            var blobs = from blob in xDoc.Descendants("Blob")
                        select ConvertToUserFile(blob);
        //do whatever you need here with the blobs.
    
    
        }
    

    请注意,这假设容器是公共的。如果您的容器不公开,那么您有两个选择:

    1. 使用应用程序密钥签署您的HTTP请求 - 这通常是糟糕的想法,同时您将访问密钥提供给silverlight应用程序(可能通过互联网分发)。
    2. 使用共享访问签名
    3. 您可以阅读有关options here.

      的更多信息

      希望有所帮助。

答案 1 :(得分:0)

这里没有魔法。我可以使用API​​或(我将要做的)使用WCF服务来获取Azure blob存储并通过我的Silverlight应用程序传递此服务以获取数据。
不是魔术而是复杂。