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

如何在Silverlight应用程序中显示容器的Azure blob列表?,silverlight,azure-storage-blobs,Silverlight,Azure Storage Blobs,如何在Silverlight应用程序中显示容器的Azure blob列表 我知道如何在常规的.Net中执行,但我需要在Silverlight中使用它。 我可以上传,但我想显示已上传内容的列表 类似于此,但对于Silverlight: CloudStorageAccount account = CloudStorageAccount.FromConfigurationSetting("DataConnectionString"); CloudBlobClient blob

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

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

类似于此,但对于Silverlight:

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

CloudBlobClient blobClient = account.CreateCloudBlobClient();

IEnumerable<CloudBlobContainer> containers = blobClient.ListContainers()
CloudStorageAccount=
CloudStorageAccount.FromConfigurationSetting(“DataConnectionString”);
CloudBlobClient blobClient=account.CreateCloudBlobClient();
IEnumerable containers=blobClient.ListContainers()

谢谢

好的,这里没有魔法。我可以使用API或(我将要做的)使用WCF服务获取Azure blob存储,并在我的Silverlight应用程序中通过此服务获取数据。

不神奇,但不复杂

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

  • 基于.NET的API-这是您在常规.NET应用程序中使用的API-但是不能在Silverlight应用程序中使用此API
  • -这是您可以直接从Silverlight使用的
  • 然而,没有内置的库。您必须自己编写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.
    
    
        }
    
    请注意,这假设容器是公共的。如果您的容器不是公共容器,则您有两个选项:

  • 使用应用程序密钥对HTTP请求进行签名—这通常是一个坏主意,因为您正在为silverlight应用程序(可能通过internet分发)提供访问密钥
  • 使用共享访问签名
  • 你可以阅读更多关于

    希望有帮助