Note that there are some explanatory texts on larger screens.

plurals
  1. POSession state serialization
    primarykey
    data
    text
    <p>i have problem with serialization my session object. What i'm doing wrong? I tried serialize that object with XmlSerializer and BinaryFormatter and there was no problem.</p> <p>When i try save the basket object to the session i'll get error: </p> <blockquote> <p>Unable to serialize the session state. In 'StateServer' and 'SQLServer' mode, ASP.NET will serialize the session state objects, and as a result non-serializable objects or MarshalByRef objects are not permitted. The same restriction applies if similar serialization is done by the custom session state store in 'Custom' mode.</p> </blockquote> <p>here is the object:</p> <pre><code>[Serializable] public class Basket { #region Fields (2) [NonSerialized] private CMS.CmsEntity db; private List&lt;ShopOrderItem&gt; ShopOrderItems; #endregion Fields #region Properties (2) public bool IsEmpty { get { return (this.Items.Count == 0); } } public List&lt;ShopOrderItem&gt; Items { get { if (this.ShopOrderItems == null) { this.ShopOrderItems = new List&lt;ShopOrderItem&gt;(); } return this.ShopOrderItems; } set { this.ShopOrderItems = value; } } #endregion Properties #region Delegates and Events (1) // Events (1)  public event EventHandler CartItemsChanged; #endregion Delegates and Events #region Methods (9) public int CountItems() { return this.ShopOrderItems.Sum(s =&gt; s.Quantity); } public decimal CountTotalAmount() { ... } public decimal CountTotalAmountWithoutVAT() { ... } public CMS.ProductVariant GetProductVariantById(int id) { ... } #region AddProductToCart public void AddProductToCart(int productVariantId, int quantity) { AddProductToCart(GetProductVariantById(productVariantId), quantity); } public void AddProductToCart(ProductVariant productVariant, int quantity) { ... } #endregion #region RemoveProductFromCart public void RemoveProductFromCart(int productVariantId) { RemoveProductFromCart(GetProductVariantById(productVariantId)); } public void RemoveProductFromCart(ProductVariant productVariant) { .. } #endregion #region UpdateProductQuantity public void UpdateProductQuantity(int variantId, int quantity, bool isRelative) { UpdateProductQuantity(GetProductVariantById(variantId), quantity, isRelative); } public void UpdateProductQuantity(ProductVariant productVariant, int quantity, bool isRelative) { ... } #endregion #endregion Methods} </code></pre> <p>Code that manipulates with session:</p> <pre><code>public static class CurrentSession { #region public static Basket Basket public static Basket Basket { get { Basket c = SessionHelper.GetSessionObject("UserCart") as Basket; if (c == null) { c = new Basket(); SessionHelper.SetSessionObject("UserCart", c); // If i comment this line, exception is not thrown } return c; } set { SessionHelper.SetSessionObject("UserCart", value); } } #endregion } </code></pre> <p>if i use InProc Session State, it works. So it must be in serialization process</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload