【问题标题】:Saving files in Azure hosted website在 Azure 托管网站中保存文件
【发布时间】:2016-08-03 07:07:40
【问题描述】:

我们目前在 IIS 服务器中托管 MVC webapp。我们可以选择让最终用户上传图像/ pdf 文件。为了存储它们,我们可以使用类似这样的代码..

if (file.ContentLength > 0)
        {
            var fileName = Path.GetFileName(file.FileName);
            var path = Path.Combine(Server.MapPath("~/App_Data/Images"), fileName);
            file.SaveAs(path);
        }

现在我们计划在 Azure 上托管它。 如果我们在 Azure 中托管,上述文件存储机制会起作用吗?或者我们需要 更改文件存储机制(由于 Azure 文件系统不同)。

【问题讨论】:

    标签: asp.net-mvc azure iis-7


    【解决方案1】:

    如何部署到 Azure 取决于您,您可以通过多种方式进行部署(我不会建议任何特定方式)。客观地说:

    虚拟机

    • 虚拟机操作系统磁盘耐用,存储在页 blob 中。但是,此存储不会在 VM 之间共享。
    • 虚拟机暂存盘(无论是普通盘还是 SSD)不耐用。假设数据将丢失。
    • 您可以将耐用磁盘附加到虚拟机(每个最多 1TB,每个内核最多两个磁盘)。就像 OS 磁盘一样,这些都是 blob 支持的。但同样,不在虚拟机实例之间共享

    云服务

    • Web 和 Worker 角色实例使用非持久操作系统磁盘。
    • 您可以将磁盘附加到 Web/辅助角色(Azure 驱动器)。这些是耐用且有斑点支持的。不在实例之间共享。

    网络应用

    • Web 应用程序提供持久存储(数量基于应用程序层)。此存储与该 Web 应用程序的所有实例共享。但是,如果您删除网络应用,此存储空间就会消失。

    Azure 存储

    • 您可以选择读取/写入离散 blob(每个最大 200GB)。这些独立于任何 VM/云服务/Web 应用程序。这些可通过 REST API 访问(并使用多种语言的 SDK 包装)。 Blob 不映射到本地文件目录(页 Blob 除外,它确实装载为 VHD,如上面的虚拟机中所述)。 Azure 存储为每个帐户提供高达 500TB 的容量,并且您可以拥有多个存储帐户。
    • Azure 文件存储是由 Azure 存储 (blob) 支持的 SMB 共享。这是持久存储。您可以将其挂载到您的虚拟机(与 Azure 磁盘不同,您可以同时将其挂载到多个 VM)。 Azure 文件存储为每个文件共享提供高达 5TB 的容量。
    • 对于面向性能的工作负载,您可以选择高级存储 (SSD)。高级存储磁盘仅与特定的虚拟机类型兼容,提供 128GB、512GB 和 1TB 容量。

    【讨论】:

      【解决方案2】:

      如果您使用 azure VM 并将站点托管在该服务器的 IIS 中,那么方法将是相同的。您将拥有一个永久性磁盘,并且文件可以存储在那里。但如果您有更多文件正在上传等等,这不是一个可行的解决方案。

      如果您使用 azure app service web 应用程序或 web 角色,则此选项不可行,因为该实例中的存储将受到限制,并且如果实例在 webroles 的情况下回收或重新启动,而在 web 应用程序的情况下被删除该数据将消失。

      Azure 存储提供 Blob 存储,可用于存储二进制文件,如文档、图像、视频等。Azure 存储价格便宜,而且可用性高且可靠。

      在您的 asp.net MVC 应用程序中,您必须添加 azure storage SDK 作为 nuget 参考,然后使用提到的上传/下载方法。

      如果您也将网站托管在 VM 中,则可以使用 azure blob 存储。

      https://azure.microsoft.com/en-in/documentation/articles/storage-dotnet-how-to-use-blobs/

      http://www.infragistics.com/community/blogs/dhananjay_kumar/archive/2016/01/26/creating-a-photo-album-for-asp-net-mvc-5-users-using-azure-blob-storage.aspx

      【讨论】:

      • 您关于 Web 应用程序的 cmets 不正确 - 除非实际删除 Web 应用程序,否则存储是持久的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-13
      • 2016-08-15
      • 2018-06-15
      • 1970-01-01
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多