我在尝试将会话变量转换为它所属的变量类型时遇到了一些“几乎随机”的错误。只是为了说清楚:
我有一个类“Elemento”,我只是创建它的一个 istance 并将它放在我的会话变量中:
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.List
1[Elemento]。Il Tipo A ha origine da 'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' nel matcho 'LoadNeither' nella posizione '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 matcho 'LoadNeither' nella posizione '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.List
1[Elemento]。类型 A 来自 'mscorlib,Version=2.0.0.0,Culture=neutral,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 构建解决方案时,它会再次发生。
我在某个地方读到我可以使用接口解决这个问题.. 但由于我仍在学习如何使用它们,我现在不能直接尝试,有一些经过测试的解决方案吗?
编辑:与 krshekhar 解决方案一起使用:
list = context.Session["cart"] as List<Elemento>;
谢谢你!