在隔离存储中编辑XML的问题



使用独立存储编辑XML的程序(必须始终在独立存储中)。然而,当我运行代码时,我收到了一个exeption:

mscorlib.ni.dll 中首次出现类型为"System.IO.IsolatedStorage.IsolatesStorageException"的异常

编辑1:还接收到:mscorlib.ni.dll中发生类型为"System.Xml.XmlException"的异常,在托管/本机边界(偶尔)之前未处理

这是代码:

var storage = IsolatedStorageFile.GetUserStoreForApplication();
using (Stream stream = storage.OpenFile("voicecmd.xml", FileMode.Truncate, FileAccess.ReadWrite, FileShare.ReadWrite))
{
XDocument str1 = XDocument.Load(stream);
var ns = XNamespace.Get("http://schemas.microsoft.com/voicecommands/1.0");
str1.Root.Element(ns + "CommandSet").Element(ns + "CommandPrefix").Value = texb.Text;
str1.Save(stream, SaveOptions.None);
await VoiceCommandService.InstallCommandSetsFromFileAsync(new Uri("ms-appdata:///local/voicecmd.xml"));

我的猜测是,这些异常只是最外层的异常。这将是他们的内在原因:

您正在使用FileMode.Ttruncate打开文件,然后尝试使用XDocument.Load()从流中读取

http://msdn.microsoft.com/en-us/library/system.io.filemode(v=vs.110).aspx:
"指定操作系统应打开现有文件。打开文件时,应截断该文件,使其大小为零字节。这需要FileIOPermissionAccess。写入权限。尝试从使用FileMode打开的文件中读取。截断会导致ArgumentException异常。">

也因为有windows-phone-8标签,并且有可能涉及windows商店:

http://msdn.microsoft.com/en-us/library/system.io.isolatedstorage.isolatedstoragefile(v=vs.110).aspx独立存储不可用于Windows应用商店应用。请使用Windows中的应用程序数据类。Windows运行时API中包含的存储命名空间可存储本地数据和文件。有关详细信息,请参阅Windows开发人员中心中的应用程序数据。

最新更新