我需要将Azure Blob存储中的文件复制到Azure托管网站的“contents”文件夹中,我正在努力使这项工作成功!任何帮助将非常感谢。 该代码在我的本地服务器上运行正常,但在Azure上托管时失败。
这是我的功能:
public bool CopyFromAzure(string myContainer, string fileName, string filePath)
{
// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString);
// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// Retrieve reference to a previously created container.
CloudBlobContainer container = blobClient.GetContainerReference(myContainer);
// Retrieve reference to a blob named "myblob".
CloudBlockBlob blockBlob = container.GetBlockBlobReference(fileName);
try
{
// Save blob contents to a file.
// --> here is where an error happens !! on System.IO.File.Create
// The value of "filePath" is: F:\sitesroot\0\Content\tmp\file_2cfe0a3d-fa7a-4ab4-a665-cdebd90567d4.pdf
using(FileStream fs= System.IO.File.Create(@filePath))
{
blockBlob.DownloadToStream(fs);
}
}
catch (Exception e)
{
return false;
}
return true;
}
问题:这可以链接到Azure或我的网站配置中的安全性偏好设置吗?
Thxs
答案 0 :(得分:2)
问题终于解决了。 出于某种原因,Azure分发的子文件夹不允许写入权限(即:/ Content / tmp)。我通过简单地将我的文件写入项目的根目录来解决了这个问题。
有效的代码:
string filePath = HttpContext.Current.Server.MapPath("~/" + fileName);
using (FileStream fs = System.IO.File.OpenWrite(filePath))
{
blockBlob.DownloadToStream(fs);
}