我能够通过 Web 应用程序从我的 Azure Blob 存储下载文件。
一旦我取回 Azure Blob 存储列表,它就不会被下载。
输入下载 blob 时出错。
如果您能查看我的代码并让我知道问题所在,我将不胜感激。
public string DownloadBlob()
{
CloudBlobContainer container = GetCloudBlobContainer();
CloudBlockBlob blob = container.GetBlockBlobReference("myBlob");
using (var fileStream = System.IO.File.OpenWrite(@"C:\BlobTest"))
{
blob.DownloadToStream(fileStream);
}
return "success!";
}
最佳答案
我已经测试了您的代码,它可以在我的 MVC Web 应用程序中运行,如下所示。
public ActionResult Download()
{
ContentResult contentResult = new ContentResult();
contentResult.Content = DownloadBlob();
return contentResult;
}
public static string DownloadBlob()
{
try
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=leeliublob;AccountKey=O7xB6ebGq8e86XQSy2vkvSi/x/e9l9FhLqayXcbz1R+E0mIcJ5Wjkly1DsQPYY5dF2JrAVHtBozbJo29ZrrGJA==;EndpointSuffix=core.windows.net");
CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = cloudBlobClient.GetContainerReference("mycontainer");
CloudBlockBlob blob = container.GetBlockBlobReference("4.PNG");
using (var fileStream = System.IO.File.OpenWrite(@"C:\Test\BlobTest.PNG"))
{
blob.DownloadToStream(fileStream);
}
return "success!";
}
catch(Exception ex)
{
return ex.StackTrace;
}
}
我认为这是您的MVC应用程序权限的问题。
您的MVC应用程序可能使用IIS的虚拟帐户,如下所示,它可能无法访问您的C盘。
要解决这个问题,有两种方法:
请尝试下载到其他磁盘,例如“E”或“D”。
请将用户组“Authenticated Users”添加到该文件或文件夹中,如下所示。
更新:
我已重现您的问题如下:
我们需要在C盘根目录下创建一个文件夹,如下所示,因为您的Web应用程序没有C盘根目录的权限:
关于azure - 如何从 ASP.NET MVC5 从 Azure BLOB 存储下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50576925/