我在Azure中托管了一个WCF服务。
我有一个空间数据库文件,我将保留在Azure blob存储(1.1G)中。压缩它是500K。
我想在服务启动时将其复制到本地存储,然后使用spatialite从数据库文件中运行各种空间功能。空间数据是静态的。
是否有人使用代码段(C#)将文件从azure blob存储区复制到本地存储区?
(另外,我认为这种方法有意义 - 是吗?)
(另外,我是否应该费心压缩文件以进行blob存储?)
由于
编辑:感谢前两个回复。我希望能使用一些代码片段。我可以使用更多的解释,哪个是更好的路线。只需编写代码或使用此引导程序。解: 我将SMARX标记为答案,因为它应该适用于任何受保护的azure文件,但由于该文件是公开的blob文件,因此我跳过了SMARX建议的CloudStorageAccount路由,支持简单的Web访问。我想知道使用SMARX的方法是否有任何速度优势。任何意见将不胜感激。
// Retrieve an object that points to the local storage resource
LocalResource localResource = RoleEnvironment.GetLocalResource("MyLocalStorage");
WebClient webClient = new WebClient();
webClient.DownloadFile(blobUrl, localResource.RootPath + "mySpatialiteDB.sqlite");
注意:您必须通过webRole属性配置本地存储
答案 0 :(得分:2)
如何:CloudStorageAccount.Parse(...).CreateCloudBlobClient().GetBlobReference("path/of/blob").DownloadFile(RoleEnvironment.GetLocalResource("nameOfLocalResource").RootPath);
在您执行其他任何操作之前,在OnStart的RoleEntryPoint中执行此操作吗?