【问题标题】:Azure VM writing to a the filesystem from ASP.NetAzure VM 从 ASP.Net 写入文件系统
【发布时间】:2015-05-03 21:26:16
【问题描述】:

我是 Windows Azure 的新手。我的服务器上有一个应用程序,我没有使用 Visual Studio 集成或打包移动到 VM,只是复制了应用程序并设置了与之相关的所有内容,我将应用程序的一部分写入特定文件 - 我知道它不是一个好主意,但我这样做是为了好玩。文件夹访问设置为每个人都可以写入(实际上它设置为应用程序池可以写入,然后我将其设置为每个人都可以在 Azure 上写入)。 代码是这样的

using (FileStream stream = new FileStream(System.Web.HttpContext.Current.Server.MapPath(fileName), FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
    stream.Position = stream.Length;
    stream.Write(RawBytes, 0, RawBytes.Length);
    stream.WriteByte(13);
    stream.WriteByte(10);
}

它在我的机器上运行良好,但在 azure VM 上由于某种原因无法运行我知道 Azure 使用不同的存储机制,有人可以指导我具体做什么

【问题讨论】:

  • 如果您将FileMode 更改为FileMode.Append,则可以避免将流位置移动到末尾的行。

标签: c# asp.net azure azure-storage


【解决方案1】:

它无法正常工作,因为您在 azure VM 上没有正确的权限。您可以写入 azure VM 上的文件系统。一种选择是写入 windows Temp 目录:

var filepath = System.IO.Path.GetTempFileName();
System.IO.File.WriteAllText(filepath, "some text");

更多选项您可以阅读:azure-faq-can-i-write-to-the-file-system-on-windows-azure

【讨论】:

    【解决方案2】:

    在云中运行应用程序时,您有许多不同的选项来管理持久性,当然写入本地文件系统是一种选择。但是,如果您需要从多个 VM 或本地访问该文件,则会遇到问题。出于这个原因,我们创建了 Azure 文件服务(请参阅Getting Started with Files),它允许您创建一个 SMB 文件共享,然后您可以使用标准 Windows API 从多个 VM 读取/写入该文件。这对于将现有的本地应用程序迁移到云特别有用。

    对于新应用程序,您可能需要考虑使用我们的其他存储选项之一 - 包括 Azure Blobs, Tables, QueuesSQL AzureDoc DB 等。

    【讨论】:

      猜你喜欢
      • 2010-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-08
      • 2016-05-09
      • 2012-10-09
      相关资源
      最近更新 更多