作成日: 2014/04/25 最終更新日: 2014/04/25
文書種別
技術情報
詳細
.NET製品を使用したアプリケーションの実行時、以下のエラーが発生する場合があります。
本エラーは、.NET Framework のコード アクセス セキュリティ (CAS: Code Access Security) のポリシーが、.NET Framework 4 で変更されたことに起因して発生しています。
本エラーに関する事例や対処方法について、以下に説明します。
1. アセンブリDLLのアクセスブロック設定を解除する
アプリケーションが使用しているアセンブリのDLLファイルに、WindowsのZone IDによるアクセスブロック設定がされていると、本エラーが発生する場合があります。
DLLファイルのプロパティ画面上に表示されるメッセージ:「セキュリティ: このファイルは他のコンピューターから取得したものです。このコンピューターを保護するため、このファイルへのアクセスはブロックされる可能性があります。」
デフォルトの状態でDLLファイルに本設定は行われていませんが、たとえば以下のような方法でDLLファイルを配布したとき、本設定が行われる場合があります。
2. 従来のCASポリシーを使用する
本エラーは.NET Framework 4 でのCASポリシー変更に起因するものですが、アプリケーション構成ファイル(app.configやweb.config)の設定により、従来のCASポリシーを使用することも可能です。
具体的には、以下のように設定します。
app.config
各要素の詳細については、以下のページをご覧ください。
<NetFx40_LegacySecurityPolicy> 要素
構成ファイルの仕様や使用方法については、MSDNライブラリ等の各種資料をご覧ください。
アプリケーション構成ファイル
3. ターゲットフレームワークを変更する
本エラーは、.NET Framework 4での仕様変更に起因するものですので、それより前の.NET Frameworkでは発生しません。
Visual Studio上でアプリケーションをビルドする際、ターゲットフレームワークを「.NET Framework 3.5」以前のバージョンに変更することで、本エラーを回避できる場合があります。
ターゲットフレームワークの設定方法については、以下のページをご覧ください。
方法: .NET Framework のバージョンをターゲットにする
4. ネットワーク経由で実行しない
アプリケーションやランタイムファイルを共有フォルダ上に配置し、ネットワークを経由して別マシンから実行した場合に、CASのエラーが発生する事例が報告されています。
.NETアプリケーションの仕様上、ネットワーク上のアプリケーションはセキュリティチェックの対象となるため、実行時にセキュリティエラーが発生する場合があります。
共有フォルダ上ではなく、ローカルフォルダに配置したうえで実行する方法をご検討ください。
System.NotSupportedException: このメソッドが暗黙的に使用するCASポリシーは .NET Framework では使用されなくなっています。互換性のためにCASポリシーを有効にするには、NetFx40_LegacySecurityPolicy 構成スイッチを使用してください。
詳細については、https://go.microsoft.com/fwlink/?LinkID=155570 を参照してください。
詳細については、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.
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サイトからのダウンロードで配布した
- ネットワークを経由して、別のマシン(ファイルサーバーなど)からコピーした
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
旧文書番号
37273