ASP.NET での LINQ の有効化
公開日: 2007 年 11 月 2 日 (作業者: walterov (英語))
更新日: 2008 年 3 月 6 日 (作業者: walterov (英語))
概要
ASP.NET は、必要最低限のコーディングで Web アプリケーションを構築するために不可欠なサービスが備わった、統一 Web 開発モデルです。ASP.NET は .NET Framework の一部であるため、ASP.NET アプリケーションのコード作成時に .NET Framework のクラスにアクセスできます。Microsoft Visual Basic、C#、JScript .NET、J# など、共通言語ランタイム (CLR) と互換性のある言語を使って、アプリケーションを作成できます。これらの言語を使用することで、共通言語ランタイム、タイプ セーフ、継承などを利用した ASP.NET アプリケーションを開発できます。
統合言語クエリ (LINQ) は、Visual Studio 2008 の機能セットの 1 つで、強力なクエリ機能を拡張して C# や Visual Basic で使用することができます。LINQ では、簡単に習得できる標準パターンを使ってデータのクエリや更新を実行できます。また、拡張することによって、あらゆる種類のデータ ストアをサポートすることができます。
重要: LINQ を使用する Web アプリケーションをホストする場合は、コード アクセス セキュリティのポリシー ファイルの変更が必要になる可能性があります。
これらの設定について、以下のセクションで説明します。詳細については、「ASP.NET での LINQ の使用」を参照してください。
信頼レベル "中" で LINQ を使用する
信頼レベル "中" で実行される Web アプリケーションで LINQ を使用するには、信頼レベル "中" 用のポリシー ファイルに 2 つの要素 (SecurityClass と IPermission) を含める必要があります。信頼レベル "中" の既定のポリシー ファイルは web_mediumtrust.config です。上記の 2 つの要素は、このファイルにあらかじめ含まれています。
SecurityClasses 要素に、以下に示す属性を持つ SecurityClass 要素を追加します。
<SecurityClass
Name="ReflectionPermission"
Description="System.Security.Permissions.ReflectionPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
Name 属性が "ASP.Net" に設定されている PermissionSet 要素に、以下に示す属性を持つ IPermission 要素を追加します。
<IPermission
class="ReflectionPermission"
version="1"
Flags="RestrictedMemberAccess"
/>
信頼レベル "高" で LINQ を使用する
信頼レベル "高" で実行される Web アプリケーションで LINQ を使用するには、信頼レベル "高" 用のポリシー ファイルに要素を 1 つ含める必要があります。信頼レベル "高" の既定のポリシー ファイルは web_hightrust.config です。このファイルには、ReflectionPermission クラスを参照する PermissionsSet要素内に IPermission 要素があらかじめ含まれています。LINQ を使用するには、この要素を修正する必要があります。
Name 属性が "ASP.Net" に設定されている PermissionSet 要素内にある、ReflectionPermission の IPermission 要素を次のように設定します。
<IPermission class="ReflectionPermission" version="1" Flags="ReflectionEmit, RestrictedMemberAccess" />