実行時にコードアクセスセキュリティポリシー(CAS policy)のエラーが発生する

文書番号 : 37273     文書種別 : 技術情報     登録日 : 2014/04/25     最終更新日 : 2014/04/25
文書を印刷する
対象製品
.NET 製品共通
詳細
.NET製品を使用したアプリケーションの実行時、以下のエラーが発生する場合があります。

System.NotSupportedException: このメソッドが暗黙的に使用するCASポリシーは .NET Framework では使用されなくなっています。互換性のためにCASポリシーを有効にするには、NetFx40_LegacySecurityPolicy 構成スイッチを使用してください。
詳細については、https://go.microsoft.com/fwlink/?LinkID=155570 を参照してください。

System.NotSupportedException: This method implicitly uses CAS policy, which has been obsoleted by the .NET Framework. In order to enable CAS policy for compatibility reasons, please use the NetFx40_LegacySecurityPolicy configuration switch.
Please see http://go.microsoft.com/fwlink/?LinkID=155570 for more information.

本エラーは、.NET Framework のコード アクセス セキュリティ (CAS: Code Access Security) のポリシーが、.NET Framework 4 で変更されたことに起因して発生しています。
本エラーに関する事例や対処方法について、以下に説明します。


1. アセンブリDLLのアクセスブロック設定を解除する
アプリケーションが使用しているアセンブリのDLLファイルに、WindowsのZone IDによるアクセスブロック設定がされていると、本エラーが発生する場合があります。


DLLファイルのプロパティ画面上に表示されるメッセージ:「セキュリティ: このファイルは他のコンピューターから取得したものです。このコンピューターを保護するため、このファイルへのアクセスはブロックされる可能性があります。」

デフォルトの状態でDLLファイルに本設定は行われていませんが、たとえば以下のような方法でDLLファイルを配布したとき、本設定が行われる場合があります。
  • メール添付やWebサイトからのダウンロードで配布した
  • ネットワークを経由して、別のマシン(ファイルサーバーなど)からコピーした
エクスプローラ上でDLLファイルを右クリックし、[プロパティ]を選択してください。プロパティ画面に[ブロックの解除]ボタンが表示される場合は、アクセスブロックの設定がされています。[ブロックの解除]ボタンをクリックし、設定を解除してください。


2. 従来のCASポリシーを使用する
本エラーは.NET Framework 4 でのCASポリシー変更に起因するものですが、アプリケーション構成ファイル(app.configやweb.config)の設定により、従来のCASポリシーを使用することも可能です。
具体的には、以下のように設定します。

app.config
<configuration>
  <runtime>
    <NetFx40_LegacySecurityPolicy enabled="true"/>
  </runtime>
</configuration>
web.config
<system.web>
  <trust legacyCasModel="true" level="Full"/>
</ system.web>

各要素の詳細については、以下のページをご覧ください。

<NetFx40_LegacySecurityPolicy> 要素

http://msdn.microsoft.com/ja-jp/library/dd409253.aspx

TrustSection.LegacyCasModel プロパティ

http://msdn.microsoft.com/ja-jp/library/system.web.configuration.trustsection.legacycasmodel.aspx


構成ファイルの仕様や使用方法については、MSDNライブラリ等の各種資料をご覧ください。

アプリケーション構成ファイル

http://msdn.microsoft.com/ja-jp/library/ms229689.aspx

構成ファイルの簡単な読み込み書き込み方法について

http://msdn.microsoft.com/ja-jp/library/cc440847.aspx

ASP.NET アプリケーションで使用する Web.config ファイルの作成方法

http://support.microsoft.com/kb/815179/ja


3. ターゲットフレームワークを変更する
本エラーは、.NET Framework 4での仕様変更に起因するものですので、それより前の.NET Frameworkでは発生しません。
Visual Studio上でアプリケーションをビルドする際、ターゲットフレームワークを「.NET Framework 3.5」以前のバージョンに変更することで、本エラーを回避できる場合があります。

ターゲットフレームワークの設定方法については、以下のページをご覧ください。

方法: .NET Framework のバージョンをターゲットにする

http://msdn.microsoft.com/ja-jp/library/bb398202.aspx


4. ネットワーク経由で実行しない
アプリケーションやランタイムファイルを共有フォルダ上に配置し、ネットワークを経由して別マシンから実行した場合に、CASのエラーが発生する事例が報告されています。

.NETアプリケーションの仕様上、ネットワーク上のアプリケーションはセキュリティチェックの対象となるため、実行時にセキュリティエラーが発生する場合があります。
共有フォルダ上ではなく、ローカルフォルダに配置したうえで実行する方法をご検討ください。

 参考情報

コード アクセス セキュリティ ポリシーの互換性と移行

http://msdn.microsoft.com/ja-jp/library/ee191568.aspx

.NET Framework 4 のセキュリティ モデルの詳細

http://msdn.microsoft.com/ja-jp/magazine/ee677170.aspx

CASが廃止。.NET 4のセキュリティはどうなるのか?

http://www.atmarkit.co.jp/fdotnet/special/dotnet4security_01/dotnet4security_01_01.html