ライブラリを変更して、部分的に信頼された呼び出し元を許可するにはどうすればよいですか?
次のエラーが発生します。
「/」アプリケーションでのサーバーエラー。
セキュリティ例外
説明:アプリケーションが、セキュリティポリシーで許可されていない操作を実行しようとしました。このアプリケーションに必要な権限を付与するには、システム管理者に連絡するか、構成ファイルでアプリケーションの信頼レベルを変更してください。
例外の詳細:System.Security.SecurityException:そのアセンブリは部分的に信頼された呼び出し元を許可しません。
ソースエラー:[関連するソース行がありません]
ソースファイル:App_Web_kzj7vfkn.2.cs
行:0
問題をもう少し見てみると、問題の原因はSystem.Web.UI.ClientScriptManagerのようです
ライブラリのソースにアクセスできると仮定します。
かなり良い詳細な説明が表示されます こちら 理解を深めるために下部のリンクもお読みください。
アセンブリではなく問題である可能性がありますが、部分的に信頼された呼び出し元を許可しない別のアセンブリを呼び出しています。実行時に fuslogvw を使用して、問題を引き起こしているアセンブリを見つけることができます。これが問題であり、このアセンブリのソースがある場合は、 [Assembly:AllowPartiallyTrustedCallers] 属性をそのアセンブリに適用する必要があります。ソースがない場合、私が知っている唯一のオプションは面倒なライブラリを置き換えることです。
私はこれが非常に古い質問であることを知っていますが、この問題に遭遇し、承認された回答とは異なる方法を使用して修正できました。これはエラーメッセージを検索するときのGoogleでの最初の結果なので、役に立つと思います自分の解決策を共有した場合、他の人に。
私が遭遇していた問題は、ハードウェアと統合しようとしたときに発生しました。ハードウェアには、DLLをGACに登録する独自のインストーラーがありました。インストールされたDLLには2つの依存DLLがありましたが、何らかの理由でインストーラーが実行されたときに、依存DLLを登録していませんでした。
基本的に、シナリオは、エントリDLLがGACに登録され、その2つの依存DLLはGACに登録されていませんが、実行可能ファイルの隣に存在していました。
プログラムを実行してハードウェアを使用しようとすると、プログラムは実行可能ファイルの横にあるエントリDLLを探していましたが、見つかりませんでした。次に、プログラムはGACに移動し、エントリDLLを見つけます。ハードウェアのDLLに入ると、最終的にGACにはないが実行可能ファイルの隣にある依存関係DLLを使用しようとします。 GACから実行可能ファイルの横にあるDLLを呼び出すと、部分的に信頼された呼び出し元エラーがスローされていました。
これを解決するには、実行可能ファイルの横にエントリDLLのコピーを配置しました。
どのシナリオが機能し、何がセキュリティエラーの原因となるのかについて知りたくて、これらが期待どおりに機能するシナリオであることがわかりました。
一貫して失敗した唯一のシナリオは、いずれかの層がGAC内にあり、依存関係DLLのいずれかがGACの外にある場合でした。
失敗したシナリオ#1:
DLL#2およびDLL#3 Exeの隣
失敗したシナリオ#2:
エグゼの隣のDLL#3
失敗したシナリオ#3:
Exeの隣のDLL#2
私はそれをテストしませんでしたが、エントリDLLおよびDLL#3が実行可能ファイルの隣にあり、DLL 2はGACに存在していたので、DLL#3が問題として特定されていたため、エラーが発生しました。
回答が遅いのはわかっていますが、将来の訪問者を助けるために、もう1つ回答を追加したいと思います。
私のシナリオ
CCavenue暗号化asp.net
が原因でこの問題が発生したとき、私はMCPG.CCA.Util
アプリケーションにCCavenue支払いゲートウェイを実装していました
web.config
に次の行を追加してください
<system.web>
<trust level="Full" />
</system.web>
使用しているライブラリとセットアップに応じて、別の解決策を次に示します。「ローカル」ドライブからプログラムを実行していることを確認してください。
VMホストとゲストOS間で共有されているフォルダーで、exeの横にライブラリdllが存在するフォルダーでプログラムを実行すると、このエラーメッセージが発生しました。フォルダーをローカルドライブにコピーします。ゲストOSが問題を修正しました。
これが信頼の問題を引き起こすことは理にかなっていますが、より有用なエラーメッセージはニースです。
私も同様の問題を抱えており、上記の答えをすべて試しましたが、どれもうまくいきませんでした。どうやら私のケースは違っていた、私の場合、フレームワークは3.5でした。私はそれを4以上に変更し、うまくいきました。