2015-03-03 32 views
0

我是Windows Azure的新寵。我在我的服務器上有一個應用程序,我將它移動到虛擬機,而不是使用Visual Studio集成或打包,只是複製應用程序並設置所有與它有關的東西,我寫入特定文件的應用程序的一部分 - 我知道它不是一個好主意,但我正在爲了樂趣而做。文件夾訪問被設置爲每個人都可以寫信給它(實際上,它被設置爲使得apppool可以寫信給它,然後我製作成每個人都可以在Azure上寫信給它)。 的代碼是這樣的Azure虛擬機寫入從ASP.Net文件系統

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中使用不同的存儲機制,可以有人指導我該怎麼辦確切地說

+0

如果你改變你的'FileMode'到'FileMode.Append'可以避開行將流的位置移動到最後。 – 2015-03-04 00:56:55

回答

0

它不起作用,因爲您沒有在您的azure虛擬機上擁有正確的權限。您可以寫入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

1

當運行在雲中的應用程序,你有一些不同的選擇來管理持久性和一定寫作到本地文件系統是一種選擇。但是,如果您需要從多個虛擬機或從本地訪問該文件,則會遇到問題。出於這個原因,我們創建了Azure文件服務(請參閱Getting Started with Files),該服務允許您創建SMB文件共享,然後您可以使用多個VM的標準Windows API對其進行讀取/寫入。這對於將現有的本地應用程序遷移到雲特別有用。

對於你可能要考慮使用我們的其他存儲選擇一個新的應用程序 - 包括Azure Blobs, Tables, QueuesSQL AzureDoc DB