Сайт, который я написал, испытывает странную проблему, из-за которой он внезапно не распознает элементы, хранящиеся в сеансе, сразу после того, как я сделал какое-либо обновление кода. Я искал Stackoverflow / google / и т. Д. И вижу, что у некоторых людей такая же проблема, но нигде не может найти решения.
Вот что примерно происходит:
Если я добавляю товар в свою корзину, он сохраняет List<BasketItem>
в сеансе. Если я затем сделаю обновление некоторого кода (не BasketItem), переменная сеанса все еще существует, но .NET, похоже, не думает, что это List<BasketItem>
, хотя это определенно так.
Когда я пытаюсь получить список элементов корзины после изменения кода, он выдает InvalidCastException
, что просто не имеет никакого смысла, поскольку он в основном пытается сказать, что типы, между которыми он преобразуется, разные, хотя это не так.
Исключение составляют:
System.InvalidCastException: [A] System.Collections.Generic.List
1[BasketItem] cannot be cast to [B]System.Collections.Generic.List
1 [BasketItem]. Тип A происходит от «mscorlib, Version = 2.0.0.0, Culture = нейтральный, PublicKeyToken = b77a5c561934e089» в контексте «LoadNeither» в расположении «C: \ Windows \ assembly \ GAC_64 \ mscorlib \ 2.0.0.0__b77a5c561934e089 \ mscorlib.dll» . Тип B происходит от «mscorlib, Version = 2.0.0.0, Culture = нейтральный, PublicKeyToken = b77a5c561934e089» в контексте «LoadNeither» в расположении «C: \ Windows \ assembly \ GAC_64 \ mscorlib \ 2.0.0.0__b77a5c561934e089 \ mscorlib.dll» .
Я использую StateServer для состояния сеанса и запускаю ASP.NET 3.5 SP1, если это помогает.
Код, который я использую, приведен ниже:
// for setting the basket
List<BasketItem> basketItems = new List<BasketItem>();
Session["basket"] = basketItems;
// for getting the basket
List<BasketItem> basketItems = (List<BasketItem>)Session["basket"];
На данный момент я использую «as casting», поэтому я не ошибаюсь, но это означает, что корзина пользователя теряется при обновлении кода.
Любые советы будут высоко ценится!
Ваше здоровье
Тим
List<>
вместоBasketItem
, из-за чего трудно увидеть, может ли строка сказать нам что-то очевидное) - person Marc Gravell   schedule 07.12.2011