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 要素内にある、ReflectionPermissionIPermission 要素を次のように設定します。

<IPermission class="ReflectionPermission" version="1" Flags="ReflectionEmit, RestrictedMemberAccess" />