XDocument.Save()的第二次迭代抛出"访问路径被拒绝"

时间:2017-02-20 18:04:54

标签: c# xml permissions linq-to-xml

我正在编写一个小类来管理内部应用程序的配置XML。

每次加载新的t列表时都会调用以下代码,并尝试序列化新t的数据,或者加载t已经存在。

我错过了一些基本的东西,但我不知道在哪里。

此代码抛出异常

if (!File.Exists(Path.Combine(Environment.CurrentDirectory + "TaskData.xml")))
{
    XDocument doc = new XDocument();
    XElement rootElement = new XElement("ConfigData",
                                new XElement("Servers"),
                                new XElement("Paths"));
    doc.Add(rootElement);
    doc.Save("TaskData.xml");
}

具体行是' doc.Save(" TaskData.xml")'。

在第一次迭代时,这很好用,代码会创建模板文件。

在第二次迭代中,即使xml文件在目录中,File.Exists也会返回' false',并且doc.Save会抛出权限异常。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我很惊讶它正在进行第一次迭代 - 因为你没有检查有用的文件。您不是使用多个参数调用Path.Combine,而是将TaskData.xml与当前目录连接起来。你想要:

if (!File.Exists(Path.Combine(Environment.CurrentDirectory, "TaskData.xml")))

遗憾的是,您当前的代码甚至可以编译......可以说Path.Combine的重载应该首先至少有2个必需的非参数数组参数。