如何在 Silverlight 应用程序中显示容器的 Azure blob 列表?
我知道如何在常规 .Net 中执行此操作,但我需要它在银光中。
我可以上传,但我想要显示已上传内容的列表.
对于 Silverlight 来说是这样的:
CloudStorageAccount account =
CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
CloudBlobClient blobClient = account.CreateCloudBlobClient();
IEnumerable<CloudBlobContainer> containers = blobClient.ListContainers()
Thanks
有两种方式与 Azure Blob 存储通信:
- 基于 .NET 的 API - 这是您在常规 .NET 应用程序中使用的 API - 但是这个 API 不能在 Silverlight 应用程序中使用
-
RESTful HTTP API http://msdn.microsoft.com/en-us/library/windowsazure/dd179355.aspx- 这是您可以直接从 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 分发)时,这通常是个坏主意。
- 使用共享访问签名
您可以阅读更多有关选项在这里。 http://msdn.microsoft.com/en-us/library/windowsazure/dd179428.aspx
希望有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)