Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从ASP.NET MVC5从Azure BLOB存储下载文件_Azure_Asp.net Mvc 5_Azure Storage Blobs - Fatal编程技术网

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

如何从ASP.NET MVC5从Azure BLOB存储下载文件,azure,asp.net-mvc-5,azure-storage-blobs,Azure,Asp.net Mvc 5,Azure Storage Blobs,我能够从web应用程序下载Azure Blob存储中的文件 一旦我得到我的Azure Blob存储列表,它就不会被下载 输入下载blob时出错 如果您能查看我的代码并告诉我问题所在,我将不胜感激 public string DownloadBlob() { CloudBlobContainer container = GetCloudBlobContainer(); CloudBlockBlob blob = container.GetBlockBlobR

我能够从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

请将用户组身份验证用户添加到该文件或文件夹,如下所示

更新:

我将您的问题复制如下:

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


我已经测试了您的代码,它在我的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

请将用户组身份验证用户添加到该文件或文件夹,如下所示

更新:

我将您的问题复制如下:

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



您能否共享错误消息或错误代码'System.UnauthorizedAccessException:'C:\BlobTest'경로에 대한 액세스가 거부되었습니다. 错误消息上面的代码将在web服务器而不是客户端计算机上下载文件。该错误清楚地表明您没有在C:\上写入的权限。您已成功地将IU权限添加到文件中。但是,也会发生相同的错误。UnauthorizedAccessException表示以下四种情况之一:调用方没有所需的权限。该文件是正在使用的可执行文件。路径是一个目录。路径指定为只读文件。是否可以共享错误消息或错误代码'System.UnauthorizedAccessException:'C:\BlobTest'경로에 대한 액세스가 거부되었습니다. 错误消息上面的代码将在web服务器而不是客户端计算机上下载文件。该错误清楚地表明您没有在C:\上写入的权限。您已成功地将IU权限添加到文件中。但是,也会发生相同的错误。UnauthorizedAccessException表示以下四种情况之一:调用方没有所需的权限。该文件是正在使用的可执行文件。路径是一个目录。路径指定为只读文件。错误仍然出现。您知道将文件从Azure Blob存储保存到C驱动器的其他方法吗@김세림 我已经更新了我的答案,希望对你有所帮助you@LeeLiu,谢谢你的回答。请注意,在StackOverflow,我们希望您将代码作为文本而不是图像发布。@PeterBons好的,谢谢您提醒我,我会修改它。错误仍然出现。您知道其他将文件从Azure Blob存储保存到我的C驱动器的方法吗@김세림 我已经更新了我的答案,希望对你有所帮助you@LeeLiu,谢谢你的回答。请注意,在StackOverflow,我们希望您将代码作为文本而不是图像发布。@PeterBons好的,谢谢您提醒我,我会修改它。