【发布时间】:2012-12-22 04:09:01
【问题描述】:
我在尝试将会话变量转换为它所属的变量类型时遇到了一些“几乎随机”的错误。 只是说清楚:
我有一个“Elemento”类,我只是创建它的一个实例并将它放在我的会话变量中:
Elemento elem = new Elemento(id, quantity);
list.Add(elem);
context.Session["cart"] = list;
现在我必须恢复我的列表,我尝试这样做:
list = (List<Elemento>)context.Session["cart"];
嗯.. 这个“有时”有效,有时无效!我第一次尝试它时完美无瑕,但现在出现“内部服务器错误 500”并出现此错误:
Impossibile eseguire il cast di [A]System.Collections.Generic.List
1[Elemento] a [B]System.Collections.Generic.List1[Elemento]。 Il Tipo A ha origin da 'mscorlib,版本=2.0.0.0,文化=中性, PublicKeyToken=b77a5c561934e089' nel 竞赛 'LoadNeither' nella 定位 'C:\Windows\assembly\GAC_64\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll'。 Il Tipo B ha origine da 'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' nel 竞赛 'LoadNeither' nella 定位 'C:\Windows\assembly\GAC_64\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll'。
翻译它..
无法投射 [A]System.Collections.Generic.List
1[Elemento] to [B]System.Collections.Generic.List1[Elemento]。 A型有起源 来自'mscorlib,版本=2.0.0.0,文化=中性, PublicKeyToken=b77a5c561934e089' 与上下文 'LoadNeither' 和 位置 'C:\Windows\assembly\GAC_64\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll'。 B 型起源于 'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 与上下文 'LoadNeither' 和 位置 'C:\Windows\assembly\GAC_64\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll'。
我可以在“一段时间内”清空 IIS 缓存来解决这个问题。但是当我从 Visual Studio 构建解决方案时,它会再次发生。
我在某个地方读到过,我可以使用接口来解决这个问题。但由于我仍在学习如何使用它们,我现在不能直接尝试,有一些经过测试的解决方案吗?
编辑: 适用于 krsekhar 解决方案:
list = context.Session["cart"] as List<Elemento>;
谢谢!
【问题讨论】:
-
检查你的会话 context.Session["cart"] 是否存在,并且在转换之前不为空。
-
是的,我已经这样做了,很抱歉没有在主帖中写出来!
-
尝试使用 list = context.Session["cart"] as List
; -
哇!好像这行得通!在第一次运行时,我在下一个指令中遇到错误,但重新启动 IIS 似乎一切正常!我希望这是稳定的eheh,谢谢!
-
你说它在你重建之前有效。每次重建时都会中断,还是仅在
Elemento类发生更改时中断?