3

私たちの C++ ソリューション (.NET 4.0 アセンブリを呼び出す) をネットワーク ドライブで実行すると、奇妙な問題が発生します。このソリューションは、NetTcpBinding を使用して複数の WCF サービスをホストします。そのうちの 1 つは既定以外のバインド構成を使用します。デフォルト以外の NetTcpBinding は、部分信頼ではそれ自体は不可能ですが (スタック オーバーフローの質問WCF NetTcpBinding がクライアントで完全な信頼を必要とするのはいつですか? を参照)、ソリューションは完全に信頼されたネットワーク ドライブで実行されます。これは、いくつかの異なるコンピューター (Windows Vista および Windows 7) で機能しますが、例外をスローして 1 つ (Windows Vista) で失敗します。

"system.serviceModel/bindings" の構成セクション ハンドラーの作成中にエラーが発生しました: そのアセンブリは、部分的に信頼された呼び出し元を許可しません。(K:\Somepath\Testing.exe.Config 行 6)

この例外は、ソリューションが実際にそのコンピューターで部分的な信頼の下で実行される場合は完全に問題ありませんが、完全な信頼の下で実行されます。コードの完全な信頼を確認しても、それは真実です。

インターネット オプションが動作するコンピュータの 1 つで、インターネット オプションを再確認しましたが、違いはありませんでした。

すべての DLL ファイルと EXE ファイルには厳密な名前が付けられています。

更新: ネットワーク ドライブは、特定のコンピューター ( caspol.exe) で完全に信頼されています。

何を探すべきですか?

追加情報が必要な場合は、お知らせください。

更新 2: その問題はまだ残っており、さらに 1 台のコンピューター (Windows 7) でも発生しています。OS非依存のようです。

4

3 に答える 3

6

これはコード アクセス セキュリティ(CAS) と呼ばれ、信頼されていないすべてのネットワーク ドライブが信頼されていないネットワーク コードとして扱われるように強制します。

ローカル コードには完全な信頼があり、ネットワーク コードには部分的な信頼があり、インターネット コードには信頼がありません。これは .NET 専用のセキュリティ モデルです。ネットワーク ドライブに完全な権限を与えて「信頼できる」ドライブとして指定する (caspol.exe完全に信頼できるネットワーク ドライブを検索する) か、EXE ファイルをローカル ドライブにコピーするかを選択できます。

CASPOL を使用してネットワーク共有を完全に信頼することが役に立ちます。

またはコマンドラインで:

CasPol.exe -m -pp off -ag 1.2 -url file://///server/share/* FullTrust .
于 2011-01-28T12:28:36.877 に答える
-1

app.config を右クリック -> プロパティ -> Unbock

于 2012-04-26T11:56:23.357 に答える