2012-04-17 6 views
0

私たちは、コードをコンパイルして、メモリ内で生成されたDLLをロードする必要があるアプリケーションのシナリオを持っています。この部分まではインフラストラクチャの観点からの要件であり、変更することはできません。.NETインメモリDLLとASP.NETページ

DLLのメモリ内でのコンパイルとロードに問題はありません。ただし、asp.netがメモリ内参照/型を見つけることができないため、ASP.NET aspxページが読み込まれません。

私が唯一の最も実用的な方法であるかわから2つの方法を考えることはできませんが:

  1. は、ASPXページまたはASCXをコンパイルして実行する方法は、カスタムHTTPハンドラ
  2. を使用して自分自身を制御して下さい
  3. 実行時のページ/ ascxコントロールへの参照としてインメモリdllをリンクする方法を見つける。

私たちはせずに、私たちは動的プロジェクトにユーザーコントロール(ASCX)を追加することができ、「プラグアンドプレイ」アーキテクチャを持っていた、あなたの洞察力...私は一度に働いていた会社で

+0

「メモリ内」と言うと、DLLはReflectionを使用して動的に読み込まれますか? – Kath

+0

はい、正しいです! – sam360

+0

アセンブリのフルネームを使用しているかどうか確認しましたか?あなたが間違っていることを確認するためにコードの部分を私たちに与えるとよいでしょう。 – Kath

答えて

0

に感謝コントロールを追加/変更するたびにサイトを再コンパイルする必要があります。

基本アーキテクチャには、各ダイナミックコントロールの名前、dllの場所、およびascxページを保持するDBテーブルが含まれていました。各コントロールは個別のdllにコンパイルされ、dllとascxページはファイルシステムに一緒に格納されていました。各コントロールは、インターフェイスを実装して、ページにロードしてレンダリングすることもできました。

各ページの読み込み中に、インターフェイスが見つかるたびにLoadControl()を使用してページにコントロールを動的に読み込みます。

これはあなたがやろうとしていることですか?

+0

はい、いいえ、LoadControl()は現在のページコントロール階層にascxをロードしますが、ASP.NETではこの段階で外部インメモリDLLへの余分な参照を追加することはできません。 この場合、物理的にプリコンパイルされたdllファイルやascxファイルがない場合、マルチテナント型のサービスを提供するという点で、もっと考える必要があると思います。テナントがシステムにアクセスするための要求として、これらすべての要素をテナントごとにロードする必要があります。 – sam360

関連する問題