再コンパイル後にセッションを維持するために、セッション状態を格納するためにSQLServerを使用しています。カスタムオブジェクトを保存していない限り、これは非常にうまく機能します。セッションに保存されている再コンパイル後にカスタムオブジェクトを使用しようとすると、次のエラーが発生します。
[A]MyObject cannot be cast to [B]MyObject.
Type A originates from 'App_Code.9qazkuv_, Version=1.3.0.0, Culture=neutral, PublicKeyToken=null'
in the context 'Default' at location
'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files
\root\26676eb7\92c7e946\App_Code.9qazkuv_.dll'.
Type B originates from 'App_Code.jndyusrx, Version=1.3.0.0, Culture=neutral, PublicKeyToken=null'
in the context 'Default' at location
'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files
\root\26676eb7\92c7e946\App_Code.jndyusrx.dll'.
私はこのバグに何ヶ月も苦労してきましたが、これまでに見つけた唯一の解決策は、オブジェクトをdllファイルに入れることです。ただし、これを行うのはそれほど簡単ではない場合もあります。この問題を回避するには、もっと簡単な方法が必要です。助言がありますか?
また奇妙なのは、バグの再現が容易ではないということです。問題を実験するために自分のサイトをtestenviromentにコピーしようとしましたが、同じサーバー上にあるtestenviromentでエラーを再現できません。そしてローカルホストでは、問題はまったく発生しません。