3

C# Interactive REPL (Roslyn から) を使用して DLL をロードしようとしています。次の例外がスローされます。

「以前のバージョンの .NET Framework では、アセンブリがサンドボックス化される原因となったネットワークの場所からアセンブリを読み込もうとしました。このリリースの .NET Framework では、既定で CAS ポリシーが有効になっていないため、この読み込みでエラーが発生する可能性があります。この読み込みがアセンブリをサンドボックス化することを意図していない場合は、loadFromRemoteSources スイッチを有効にしてください。詳細については、 http: //go.microsoft.com/fwlink/ ?LinkId=155569 を参照してください。

DLL はネットワーク上の場所にないため、この例外がスローされる理由がわかりません。それにもかかわらず、(私の知る限り)変更する app.config ファイルはありません。このエラーを解決する方法を知っている人はいますか?

アップデート:

アセンブリのブロックを解除したため、この例外はなくなりました。しかし、C# インタラクティブ ウィンドウの app.config で通常定義されているスイッチをどのように設定すればよいかという、より一般的な質問に答えたいと思います。

4

1 に答える 1

2

問題のアセンブリは、読み込もうとするときにネットワーク上の場所にある必要はありません。表示されているメッセージは、読み込もうとしているアセンブリが (ある時点で) インターネットからダウンロードされ、現在信頼できないとマークされていることを警告しています。

メタ質問に対して、ほとんどの構成設定は、必要に応じてプログラムで設定を調整できるようにする 1 つ以上のコード構造 (API、属性など) にマップされます。特定の設定を変更する方法は、設定とそれが影響する API によって異なります。場合によっては、ランタイムを構成するコードを記述する必要がある場合もあれば、IIS、ログとトレース、WCF エンドポイントなどを構成する必要がある場合もあります。

上記のリンク先の記事を読むと、次のことがわかります。

アプリケーションが Web からコピーされた場合、それがローカル コンピューター上にある場合でも、Windows によって Web アプリケーションとしてフラグが付けられます。ファイルのプロパティを変更してその指定を変更するか、要素を使用してアセンブリに完全な信頼を付与することができます。別の方法として、 UnsafeLoadFromメソッドを使用して、オペレーティング システムが Web から読み込まれたものとしてフラグを立てたローカル アセンブリを読み込むことができます。

一般に、UnsafeLoadFrom を使用する方が、アプリが信頼されていないソースから任意のアセンブリをダウンロードし、アプリ内で完全に信頼して実行できるようにするよりも安全です。

ドキュメントは次のように続けています。

この要素は通常、アプリケーション構成ファイルで使用されますが、コンテキストに応じて他の構成ファイルで使用できます。詳細については、.NET セキュリティ ブログの記事「 CAS ポリシーの暗黙的な使用: loadFromRemoteSources」を参照してください。

この後者のドキュメントを注意深く読んでください - loadFromRemoteSources 設定フラグを設定するのと同じ結果をもたらすために書く必要があるコードを示しています: ただし、アプリに任意のコードをロードする危険性を過小評価しないでください!

于 2013-02-27T19:08:29.453 に答える