3

開発グループの誰かが.NETアセンブリをアップロードできるようにするMVCアプリケーションを作成したいのですが、.dllを反映してそこから情報を収集したいと思います。これを安全にやりたいです。このようなアセンブリを「サンドボックス」にロードしないでください。それを行う正しい方法は何ですか?

4

1 に答える 1

4

使用できるよりもメタデータを検査するだけの場合Assembly.ReflectionOnlyLoadFrom。このAPIを使用してアセンブリをロードすると、アセンブリがロードされますが、その中のコードはどれも実行可能ではありません。

リフレクションのみのコンテキストにロードされたアセンブリからコードを実行することはできません。コードを実行するには、LoadFileメソッドを使用してアセンブリをロードします。

アセンブリをアンロードできるようにする必要がある場合は、新しいAppDomainでこれを実行することをお勧めします。アセンブリはアンロードできませんが、それらを含むAppDomainはアンロードできます。

コードを実行する必要があるが、ライブラリが何も悪いことをしないようにしたい場合は、新しいAppDomainをロードし、コードのアクセス許可を使用してAppDomainを制限できます。このCodeProjectの記事は、それを行う方法についての優れたウォークスルーを提供します。

于 2013-01-11T16:09:26.070 に答える