C# Windows 10 UWP应用程序XElement.Save();“访问被拒绝”;例外
我正在编写一个Windows10UWP应用程序,我遇到了一个障碍。我在app文件夹的根目录中有一个Settings.xml,我将使用它来存储DB连接信息,以及一些辅助设置。我可以很好地加载XML,我的编辑功能也可以工作(我可以通过调试提取XML并查看更改)。我的问题出现在尝试编写已编辑的文件时。我知道我不能用UWP直接访问文件系统,但是我已经尝试了几种我在网上找到的在我的限制范围内工作的不同方法,仍然找不到一种有效的方法。我总是以某种形式出现“访问被拒绝”的错误。下面是我的Save函数的一个片段。任何帮助都将不胜感激C# Windows 10 UWP应用程序XElement.Save();“访问被拒绝”;例外,c#,xml,win-universal-app,windows-10-universal,C#,Xml,Win Universal App,Windows 10 Universal,我正在编写一个Windows10UWP应用程序,我遇到了一个障碍。我在app文件夹的根目录中有一个Settings.xml,我将使用它来存储DB连接信息,以及一些辅助设置。我可以很好地加载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";
}
我在我的解决方案中添加了一个xml文件(在根目录中),并复制粘贴了您的代码。 它第一次运行,但第二次得到异常。原因是您的流没有关闭。您应该将其与以下各项一起使用:
using (Stream stream = await file.OpenStreamForWriteAsync())
{
xmlSettings.Save(stream);
}
通过此更改,代码甚至在第二次运行。Settings.xml是否随软件包一起提供?文件在哪里?你在LocalFolder中下载/创建它吗?嗨,Romasz,我自己创建了这个文件。这是我解决问题的根本。嗨,阿科斯,非常感谢你指出这一点。它完全解决了我的问题!我很高兴能帮上忙!