2016-03-07 64 views
0

我正在嘗試在ASP.Net中編寫XML文件(請參閱下面的代碼)。這不是寫作不起作用,但是當我運行代碼時,它會返回一個錯誤:Access to the path 'C:\Program Files\IIS Express\devices.xml' is denied.在根目錄中寫入xml

這不是我的項目的目錄,所以我不知道它爲什麼試圖保存XML在那裏。

如果這是錯誤的問題,我如何確保XML保存到我的項目根目錄?否則,這裏出了什麼問題,我該怎麼做?

代碼

ArrayList devices = new ArrayList(); 
devices.Add(new Device()); 

XmlTextWriter writer = new XmlTextWriter("devices.xml", Encoding.UTF8); 
writer.WriteStartDocument(); 

foreach(Device device in devices) 
{ 
    writer.WriteStartElement("device"); 

    writer.WriteStartElement("name"); 
    writer.WriteString(device.name); 
    writer.WriteEndElement(); 

    writer.WriteEndElement(); 
} 

writer.WriteEndDocument(); 
writer.Close(); 
+0

你是否嘗試使用當前目錄? Directory.GetCurrentDirectory()方法獲取當前目錄,並將其與您的文件名相結合,將其存儲在您的項目文件夾中 – Megha

回答

1

我認爲你應該使用使用Server.Mappath()到你的應用程序運行在正確的路徑,所以:

new XmlTextWriter(Server.MapPath("~/devices.xml"), Encoding.UTF8); 

看看是否能幫助你?

+0

它可能有效,但它說'服務器不存在'..我試過'System.Web .HttpContext.Current.Server',但這也不起作用。 –

+0

是否嘗試使用當前目錄? Directory.GetCurrentDirectory()方法獲取當前目錄並將其與您的文件名相結合以將其存儲在您的項目文件夾中 – Megha

+0

Server.MapPath()應該可以工作 - 在您的調試中您可能必須使用本地IIS而不是VS內置服務器。如果它是一個自託管的應用程序,那麼我不知道 –

1

看起來你的工作目錄或當前工作目錄設置爲「C:\ Program Files \ IIS Express」。要解決這個問題,你可以在調試器中進入Project - > Project properties - > Debug。將工作目錄設置爲希望保存xml文件的位置並運行該程序。這將在您想要的位置創建XML文件。

+0

嗯,這看起來確實是我的問題,但我必須在哪裏指定? https://gyazo.com/c08146fcfb8237c29be85568bd8b8743.png這是我看到的唯一地方'IIS​​ Express' –

+0

剛剛在startUrl上方,您可以選擇設置工作目錄。在那裏設置目錄。 – Megha