C# WP8:在隔离存储中丢失数据或访问XML文件

C# WP8:在隔离存储中丢失数据或访问XML文件,c#,xml,windows-phone-8,isolatedstorage,C#,Xml,Windows Phone 8,Isolatedstorage,我正在创建一个WP8购物列表应用程序,用于存储用户创建的列表(在我的代码中,每个购物列表都定义为我定义的ListObj)。我想通过.xml文件保存用户创建的列表。只要我继续添加到这个列表中,我似乎没有任何问题。但当我想从列表中删除ListObj时,我开始遇到麻烦。当我从ListObj列表中删除某些内容并尝试在启动时加载列表后重新打开应用程序时,我输入以下try/catch块: try { using (IsolatedStorageFile appStorage = I

我正在创建一个WP8购物列表应用程序,用于存储用户创建的列表(在我的代码中,每个购物列表都定义为我定义的ListObj)。我想通过.xml文件保存用户创建的列表。只要我继续添加到这个列表中,我似乎没有任何问题。但当我想从列表中删除ListObj时,我开始遇到麻烦。当我从ListObj列表中删除某些内容并尝试在启动时加载列表后重新打开应用程序时,我输入以下try/catch块:

try
{
  using (IsolatedStorageFile appStorage =
           IsolatedStorageFile.GetUserStoreForApplication())
  {
    if (appStorage.FileExists("rootList.xml"))
    {
      using (IsolatedStorageFileStream isStream = 
               appStorage.OpenFile("rootList.xml", 
                                  FileMode.Open, FileAccess.Read))
      {
        XmlSerializer serializer = new XmlSerializer(typeof(List<ListObj>));
        rootList = (List<ListObj>)serializer.Deserialize(isStream);
      }
    }
    else
    {
      rootList = new List<ListObj>();
      Debug.WriteLine("rootList not found.");
    }
  }
}
catch
{
  ///Uhhh....
}
试试看
{
使用(隔离存储文件appStorage)=
IsolatedStorageFile.GetUserStoreForApplication())
{
if(appStorage.FileExists(“rootList.xml”))
{
使用(IsolatedStorageFileStream isStream=
appStorage.OpenFile(“rootList.xml”,
FileMode.Open,FileAccess.Read)
{
XmlSerializer serializer=新的XmlSerializer(typeof(List));
根列表=(列表)序列化程序。反序列化(isStream);
}
}
其他的
{
rootList=新列表();
Debug.WriteLine(“未找到根列表”);
}
}
}
抓住
{
///嗯。。。。
}

但是,我的程序执行catch语句,在该语句中没有任何明显的变化。我不确定在这个catch块中执行什么来诊断我的问题。我想我正在失去对应用程序隔离存储的访问权,但再一次,我不确定如何继续。有什么想法吗?

所以我最终找到了解决问题的办法。事实证明,我修改.xml文件的方式导致了一个无法再读取的错误。我用修改后的数据完全覆盖我的文件,而不是试图更改现有数据,从而解决了这个问题。

如果您将catch更改为catch(Exception ex),异常消息是什么?出于调试目的,暂时删除
try catch
,以便您可以看到更详细的错误消息异常消息:mscorlib.ni.dll中发生了类型为“System.Reflection.TargetInvocationException”的异常,并且在托管/本机边界之前未处理类型为的异常“System.IO.FileNotFoundException”发生在mscorlib.ni.dll中,在托管/本机边界之前未被处理。System.Xml.Serialization.ni.dll中首次出现“System.InvalidOperationException”类型的异常,System.Xml.Serialization.ni.dll中出现“System.InvalidOperationException”类型的异常,但在System.Xml.Serialization.ni.dll中未被处理用户代码catch语句捕获到一个系统异常:XML文档(7,19)中有一个错误。@KelechiFletcher从内部异常可以看出,请检查您试图访问的文件是否存在于该XML文档中。