在Azure托管网站中保存文件

时间:2016-08-03 07:07:41

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

我们目前在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文件系统不同)。

2 个答案:

答案 0 :(得分:2)

如何部署到Azure取决于您,并且有很多方法可以做到(我不打算以任何特定的方式提出建议)。客观地说:

虚拟机

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

云服务

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

网络应用

  • Web Apps提供持久存储(基于应用层的数量)。此存储与该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容量。

答案 1 :(得分:1)

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

如果你要使用azure app service web apps或web角色,那么这个选项是不可行的,因为该实例中的存储将受到限制,如果实例在webroles的情况下回收或重新启动,并且在web应用的情况下被删除那些数据将会消失。

Azure存储提供blob存储,这对于存储文档,图像,视频等二进制文件非常有用。Azure存储很便宜,并且具有高可用性和可靠性。

在你的asp.net MVC应用程序中,你必须添加azure存储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