XDocument.Save() 的第二次迭代抛出 "Access to Path Denied"
Second iteration of XDocument.Save() throwing "Access to Path Denied"
我正在写一个小的 class 来管理内部应用程序的配置 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 returns 'false' 和 doc.Save 也会抛出权限异常.
非常感谢任何帮助。
我很惊讶它在第一次迭代中工作 - 因为您没有检查有用的文件。您不是使用多个参数调用 Path.Combine
,而是将 TaskData.xml
与当前目录连接起来。你想要:
if (!File.Exists(Path.Combine(Environment.CurrentDirectory, "TaskData.xml")))
遗憾的是,您当前的代码甚至可以编译...可以说 Path.Combine
的重载应该首先至少有 2 个 required non-param-array 参数...
我正在写一个小的 class 来管理内部应用程序的配置 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 returns 'false' 和 doc.Save 也会抛出权限异常.
非常感谢任何帮助。
我很惊讶它在第一次迭代中工作 - 因为您没有检查有用的文件。您不是使用多个参数调用 Path.Combine
,而是将 TaskData.xml
与当前目录连接起来。你想要:
if (!File.Exists(Path.Combine(Environment.CurrentDirectory, "TaskData.xml")))
遗憾的是,您当前的代码甚至可以编译...可以说 Path.Combine
的重载应该首先至少有 2 个 required non-param-array 参数...