2012-07-19 2 views
0

У меня возникла проблема с записью в xml-файл, который находится в папке моего приложения (окна 8, стиль метро). Я получаю Unauthorized AccessException, когда я пытаюсь открыть файл в режиме чтения/записи. Я провел много исследований, но все равно ничего. Я пробовал это решение:Windows 8 xml file writing

var sf = await Package.Current.InstalledLocation.GetFileAsync(@"data.xml"); 
     XmlDocument xmlDoc; 
     using (var stream = await sf.OpenAsync(FileAccessMode.ReadWrite)) 
     { 
      xmlDoc = await XmlDocument.LoadFromFileAsync(sf); 
      XmlElement root = xmlDoc.DocumentElement; 
      XmlElement xe = xmlDoc.CreateElement("debt"); 

      XmlElement id = xmlDoc.CreateElement("Id"); 
      id.InnerText = Guid.NewGuid().ToString(); 

      XmlElement name = xmlDoc.CreateElement("Name"); 
      name.InnerText = d.Name; 

      XmlElement surname = xmlDoc.CreateElement("Surname"); 
      surname.InnerText = d.Surname; 

      xe.AppendChild(id); 
      xe.AppendChild(name); 
      xe.AppendChild(surname); 

      root.AppendChild(xe); 
     } 
     if (xmlDoc != null) 
      await xmlDoc.SaveToFileAsync(sf); 

Но снова исключение происходит в строке, где я открываю поток.

ТНХ за помощь

+0

Какова ценность Package.Current.InstalledLocation. Вы пытались запустить его (Visual Studio) в качестве администратора? Хотя это может и не быть решением, это может быть индикатором того, что здесь не так. –

ответ

2

Package.Current.InstalledLocation.GetFileAsync представляет, где установлено ваше приложение, которое представляет собой область, которую вы не можете напрямую записывать файлы. Используйте следующую

Windows.ApplicationModel.Package.Current.InstalledLocation

или

Windows.Storage.ApplicationData.Current.LocalFolder.Path

Я использую бывший и она отлично работает, см. http://metrorssreader.codeplex.com/SourceControl/changeset/view/18082#263004