2016-03-07 67 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