Azure VM从ASP.Net写入文件系统

时间:2015-03-03 09:28:49

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

我是Windows Azure的新手。我在我的服务器上有一个应用程序,我没有使用visual studio集成或打包移动到VM只是复制了应用程序并设置了与之相关的所有内容,我写入特定文件的应用程序的一部分 - 我知道它不是一个好主意,但我这样做是为了好玩。设置文件夹访问权限,以便每个人都可以写入它(实际上它被设置为apppool可以写入它然后我这样做,以便每个人都可以在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);
}

它在我的机器上运行正常但是由于某种原因它在天蓝色的VM上无法工作我知道Azure使用不同的存储机制,有人可以指导我做什么准备

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

由于您在azure VM上没有正确的权限,因此无效。您可以在Azure上写入文件系统。一种选择是写入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