セッション変数をそれに属する変数タイプにキャストしようとすると、「ほぼランダムな」エラーが発生します。明確にするために:
クラス「Elemento」があります。そのインスタンスを作成して、セッション変数に配置します。
Elemento elem = new Elemento(id, quantity);
list.Add(elem);
context.Session["cart"] = list;
今、私はリストを回復する必要があり、次の方法でそれを実行しようとしています:
list = (List<Elemento>)context.Session["cart"];
まあ..この「いつか」はうまくいきますが、うまくいかないこともあります! 最初に試したときは問題なく動作しましたが、今では「内部サーバー エラー 500」というエラーが表示されます。
[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 conto '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 conto '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 は、コンテキスト 'LoadNeither' と位置 'C:\Windows\assembly\GAC_64\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll' を持つ 'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' に由来します。 . タイプ B は、コンテキスト 'LoadNeither' と位置 'C:\Windows\assembly\GAC_64\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll' を持つ 'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' に由来します。 .
IISキャッシュを空にすることで、これを「しばらくの間」解決できます..しかし、ビジュアルスタジオからソリューションを構築すると、再び発生します。
インターフェイスを使用してこれを解決できる場所を読みました..しかし、私はまだそれらの使用方法を学んでいるので、今のところ直接試すことはできません。これに対するテスト済みの解決策はありますか?
編集: krshekhar ソリューションで動作します:
list = context.Session["cart"] as List<Elemento>;
ありがとう!