開発グループの誰かが.NETアセンブリをアップロードできるようにするMVCアプリケーションを作成したいのですが、.dllを反映してそこから情報を収集したいと思います。これを安全にやりたいです。このようなアセンブリを「サンドボックス」にロードしないでください。それを行う正しい方法は何ですか?
質問する
538 次
1 に答える
4
使用できるよりもメタデータを検査するだけの場合Assembly.ReflectionOnlyLoadFrom
。このAPIを使用してアセンブリをロードすると、アセンブリがロードされますが、その中のコードはどれも実行可能ではありません。
リフレクションのみのコンテキストにロードされたアセンブリからコードを実行することはできません。コードを実行するには、LoadFileメソッドを使用してアセンブリをロードします。
アセンブリをアンロードできるようにする必要がある場合は、新しいAppDomainでこれを実行することをお勧めします。アセンブリはアンロードできませんが、それらを含むAppDomainはアンロードできます。
コードを実行する必要があるが、ライブラリが何も悪いことをしないようにしたい場合は、新しいAppDomainをロードし、コードのアクセス許可を使用してAppDomainを制限できます。このCodeProjectの記事は、それを行う方法についての優れたウォークスルーを提供します。
于 2013-01-11T16:09:26.070 に答える