2011-02-08 1 views
1

J'ai essayé de sérialiser cookie pour l'enregistrer et désérialiser à la prochaine fois que je commence mon application. Mais le résultat de désérialiser est vide. Qu'est-ce qui ne va pas?Comment sérialiser CookieContainer dans les applications wp7?

void SaveCookie() { 
    var appStorage = IsolatedStorageFile.GetUserStoreForApplication(); 
    if (this.checkBox_save_passowrd.IsChecked == true) 
    { 
     CookieContainer cc = SEC_Services.Httprequest.cookie; 
     string fileName = "usercookie.xml"; 
     using (var file = appStorage.OpenFile(fileName, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write)) 
     { 
      using (var writer = new StreamWriter(file)) 
      { 
       System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(CookieContainer)); 
       xs.Serialize(writer, cc); 
       writer.Close(); 
      } 
     } 
    } 
    else { 
     if (appStorage.FileExists("usercookie.xml")) 
     { 
      appStorage.DeleteFile("usercookie.xml"); 
     } 
    } 
} 

void ReadCookie() { 
    var appStorage = IsolatedStorageFile.GetUserStoreForApplication(); 
    if (appStorage.FileExists("usercookie.xml")) 
    { 
     using (System.IO.StreamReader reader = new StreamReader(appStorage.OpenFile("usercookie.xml", FileMode.Open))) 
     { 
      System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(CookieContainer)); 
      CookieContainer obj = (CookieContainer)xs.Deserialize(reader); 
      reader.Close(); 
      SEC_Services.Httprequest.cookie = obj; 
      if (obj.Count != 0) { 
       NavigationService.Navigate(new Uri("/PanoramaPage.xaml", UriKind.Relative)); 
      } 
     } 
    } 
} 

Je trouve également ce simple C#: Writing a CookieContainer to Disk and Loading Back In For Use montre que CookieContainer pourrait être Serialize.But il n'y a pas SoapFormatter dans la bibliothèque wp7

Répondre

3
IsolatedStorageSettings.ApplicationSettings["index"] = yourcookie; 

Vous n'avez pas besoin de sérialiser.

Je l'utilise dans un projet

-2

La question est « Comment sérialiser CookieContainer » et la réponse acceptée ne répond pas vraiment. Voici comment faire avec sérialisation:

écrire sur le disque:

public static void WriteCookiesToDisk(string file, CookieContainer cookieJar) 
{ 
    using(Stream stream = File.Create(file)) 
    { 
     try { 
      Console.Out.Write("Writing cookies to disk... "); 
      BinaryFormatter formatter = new BinaryFormatter(); 
      formatter.Serialize(stream, cookieJar); 
      Console.Out.WriteLine("Done."); 
     } catch(Exception e) { 
      Console.Out.WriteLine("Problem writing cookies to disk: " + e.GetType()); 
     } 
    } 
} 

Lire à partir du disque:

public static CookieContainer ReadCookiesFromDisk(string file) 
{ 

     try { 
      using(Stream stream = File.Open(file, FileMode.Open)) 
      { 
       Console.Out.Write("Reading cookies from disk... "); 
       BinaryFormatter formatter = new BinaryFormatter(); 
       Console.Out.WriteLine("Done."); 
       return (CookieContainer)formatter.Deserialize(stream); 
      } 
     } catch(Exception e) { 
      Console.Out.WriteLine("Problem reading cookies from disk: " + e.GetType()); 
      return new CookieContainer(); 
     } 
} 
+0

Il n'y a pas BinaryFormatter dans WP7 donc cette réponse n'est pas applicable aussi bien. –

+1

Je n'étais pas au courant de ça! Essayez cette réponse: http://stackoverflow.com/a/1777234/1099131 – LucidObscurity

Questions connexes