Windows 10 UWP App XElement.Save()“访问被拒绝”异常

时间:2016-03-11 19:55:46

标签: c# xml win-universal-app windows-10-universal

我正在编写一个Windows 10 UWP应用程序,而且我遇到了麻烦。我在app文件夹的根目录中有一个Settings.xml,用于存储数据库连接信息,以及一些辅助设置。我可以加载XML,我的编辑功能(我可以通过调试提取XML并查看更改)。尝试编写已编辑的文件时出现问题。我知道我没有使用UWP直接访问文件系统,但是我已经尝试了几种不同的方法,我在网上找到了在我的约束下工作但仍然无法找到有效的方法。我总是以某种形式回复“访问被拒绝”错误。这是我的Save函数现在看起来的片段。任何帮助将不胜感激。

try
{
    XElement xmlSettings = XElement.Load(uri: "Settings.xml");
    XElement xmlNode;

    //Do Stuff (clipped for brevity).

    StorageFolder folder = ApplicationData.Current.LocalFolder;
    StorageFile file = await folder.CreateFileAsync(desiredName: "Settings.xml", options: CreationCollisionOption.ReplaceExisting);
    Stream stream = await file.OpenStreamForWriteAsync();
    xmlSettings.Save(stream);

    Error = "";
}
catch (Exception e)
{
    Error = "SaveSettings";
}

1 个答案:

答案 0 :(得分:1)

我在我的解决方案中添加了一个xml文件(在根目录中)并复制粘贴了您的代码。 它第一次运行,但第二次获得异常。原因是您的流未关闭。您应该使用它:

using (Stream stream = await file.OpenStreamForWriteAsync())
{
    xmlSettings.Save(stream);
}

通过此更改,代码甚至第二次工作。