XmlDocument保存投掷访问权限被拒绝

时间:2013-06-11 20:44:07

标签: c# xml file-io xmldocument

我正在尝试将XML字符串保存到XML文件中。在大多数情况下,XML文件已经存在,我想重写它。目前我得到一个例外,说明拒绝访问该文件。

XmlDocument xDoc = new XmlDocument();
xDoc.LoadXml(xmlString);
xDoc.Save(filePath);

如果我先加上这个:

if(File.Exists(filePath)
{
    File.Delete(filePath);
}

那么没有问题。所以我假设它不会让我覆盖文件?我不想每次都删除文件。

这里适当的解决方案是什么?我应该先尝试加载文件,并用my xml替换所有内容吗?

2 个答案:

答案 0 :(得分:0)

您可以尝试写入xml文件

using (TextWriter writer = new StreamWriter(filePath)) { doc.Save(writer); writer.Close(); }

答案 1 :(得分:0)

在您的问题中包含异常类型和消息可能会有所帮助。如果您收到UnauthorizedAccessException,这些通常有两种形式:缺少权限和并发文件访问。

由于您可以通过托管文件访问调用(我假设您正在通过相同的实用程序和凭据执行)删除该文件,因此在尝试执行时可能需要查看哪些进程可以访问您的文件保存。如果有另一个进程打开或写入该位置(包括文本编辑器),或者另一个进程正在使用自定义权限分配编写该文件(可能缺少“创建文件/写入数据”权限并包括“删除文件”特权),它可能导致这种类型的异常。

如果您的程序是此文件的唯一使用者,并且您一次只执行一个线程,则可能需要对该文件从父文件夹继承的权限进行完整性检查。