azure - 如何从 ASP.NET MVC5 从 Azure BLOB 存储下载文件

标签 azure asp.net-mvc-5 azure-blob-storage

enter image description here

我能够通过 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盘。 enter image description here

要解决这个问题,有两种方法:

  1. 请尝试下载到其他磁盘,例如“E”或“D”。

  2. 请将用户组“Authenticated Users”添加到该文件或文件夹中,如下所示。

enter image description here

更新:

我已重现您的问题如下:

enter image description here

我们需要在C盘根目录下创建一个文件夹,如下所示,因为您的Web应用程序没有C盘根目录的权限:

enter image description here

关于azure - 如何从 ASP.NET MVC5 从 Azure BLOB 存储下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50576925/

相关文章:

c# - 使用 AutoMapper 时,此平台不支持 IDictionaryFactory

c# - AsyncTimeout Action 过滤器有什么意义?

c# - UserManager.FindByIdAsync(User.Identity.GetUserId()) 是否缓存?

azure - 当源是 Blob 存储而接收器是 SQL 数据库时,有什么方法可以过滤掉复制事件中的某些数据?

windows - 如何获取 Azure 角色的初始配置?

AzureFileCopyV4 上传到 Azure 存储静态网站时失败 "$web"

azure - 如何检查二头肌文件中是否已存在 KeyVault secret

azure - Cosmos DB 警报

azure - 将标记与 Azure 存储列表 Blob 结合使用

azure - 使用 Windows Azure 作为文件存储系统的最佳策略是什么 - 具有 http 下载功能