csharp Serialize object to cookie
using System.IO; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; [Serializable] public class MyClass { private int _MyProperty; public int MyProperty { get { return this._MyProperty; } set { this._MyProperty = value; } } public bool AnotherProperty { get; set; } } /// <summary> /// Stores object in cookie /// </summary> /// <param name="filter"></param> public void SaveToCookie() { HttpCookie cookie = new HttpCookie("MyClass") { Expires = DateTime.Now.AddHours(24) }; Stream stream = new MemoryStream(); try { // Create a binary formatter and serialize the myClass into the memorystream IFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream, this); // Go to the beginning of the stream and fill a byte array with the contents of the memory stream stream.Seek(0, SeekOrigin.Begin); byte[] buffer = new byte[stream.Length]; stream.Read(buffer, 0, (int)stream.Length); // Store the buffer as a base64 string in the cookie cookie.Value = Convert.ToBase64String(buffer); // Add the cookie to the current http context HttpContext.Current.Response.Cookies.Add(cookie); } catch (Exception) { //do nothing } finally { stream.Close(); } } /// <summary> /// Retrieves object from cookie /// </summary> /// <returns></returns> public static MyClass RestoreFromCookie() { // Always remember to check that the cookie is not empty HttpCookie cookie = HttpContext.Current.Request.Cookies["MyClass"]; if (cookie != null) { // Convert the base64 string into a byte array byte[] buffer = Convert.FromBase64String(cookie.Value); // Create a memory stream from the byte array Stream steam = new MemoryStream(buffer); try { // Create a binary formatter and deserialize the // contents of the memory stream into MyClass IFormatter formatter = new BinaryFormatter(); MyClass streamedClass = (MyClass)formatter.Deserialize(steam); return streamedClass; } finally { // ... and as always, close the stream steam.Close(); } } return null; }
Serializes an object to a cookie, thanks to: http://briancaos.wordpress.com/2009/03/24/streaming-objects-into-a-cookie/
Updated: Wednesday 18th May 2011, 11:10am
There are 0 comments
Comments are currently closed.