ASP.NETアプリケーションでは、完全修飾文字列参照でType.GetType()
を使用し、その型のオブジェクトをインスタンス化することによって、「モジュール」システムを利用します。ビン内のASP.NETアンロードアセンブリ
しかし、最近ではタイプを見つけることができないという例外が投げられていますが、時折しかありません。私は自由に複製することができませんでしたが、通常、マスターページやASCXマークアップのようなビン以外のものに簡単に変更した後に発生します。サイトを再構築するかIISを再起動するまでは、自分自身を分類しません。 web.configに変更を加えても修正されません。
web.config内のアセンブリへの明示的な参照を追加することは、binディレクトリに置かれていることを望んでいるのではなく、問題の発生を減らしますが、完全に発生することを防ぎません。どういうわけか、どこかで私のアセンブリを削除することをお勧めします。
以前のページの読み込みにもかかわらず、タイプが見つからない場所にデバッグしましたが、アセンブリはThread.GetDomain().GetAssemblies()
から消えているようです。明らかに、私はアプリケーションが稼働しているときにこれが起こる危険性はないので、私は手作業でDLLをAssembly.LoadAssembly()
と呼んでいましたが、アセンブリを探す方法を作る価値があるかどうかを知るために必要でした。
xxx.Modules.CustomCaseStudy が [B]にキャストすることはできません[A]がxxx.Modules.CustomCaseStudy:それは次のエラーを投げたとして、私はクラスを使用しようとしたとき、これは、いずれかの動作しませんでした。 を入力コンテキスト で 'xxx.Modules、 バージョン= 1.0.0.0、文化=中立、 なPublicKeyToken = nullを' に由来する 'LoadNeither' 場所 「Cで:\開発\ XXX \ xxx.Web \ビン\ xxx.Modules.dll '。 タイプBは、 'C:\ WINDOWS \ Microsoft.NET \ Framework \ v2'のコンテキストで 'xxx.Modules、 バージョン= 1.0.0.0、Culture =ニュートラル、 PublicKeyToken = null'から発信されます。 0.50727 \ Temporary ASP.NET Files \ root \ fff474e0 \ 8c6aec7e \ assembly \ dl3 \ 325b4335 \ 009dbd67_b2fbc901 \ xxx.Modules.DLL '。
すべての間、必要なDLLは、web.configの明示的な参照はもちろんのこと、使用を控えて、待っています。
犯人を追跡するための情報、または最後の手段として、そのアセンブリを「デフォルト」のコンテキストにロードする方法についても、非常に感謝しています。
これは.NET 4.5で私にとってはうまくいきませんでした。 [This](http://stackoverflow.com/questions/3552223/asp-net-appdomain-currentdomain-getassemblies-assemblies-missing-after-app)は役に立ちました。 –