フィルター <filter>

  • 概要
  • 互換性
  • セットアップ
  • 方法
  • 構成
  • サンプル コード

※本ページに挿入されている画像をクリックすると、画像全体が別ウィンドウで表示されます。

概要

<httpProtocol> 要素の <customHeaders> 要素は、インターネット インフォメーション サービス (IIS) 7.0 で Web サーバーから HTTP 応答内で返されるカスタム HTTP ヘッダーを指定します。

: HTTP ヘッダーは、Web サーバーからの応答で返された名前と値のペアです。カスタム応答ヘッダーは、既定の HTTP ヘッダーと共にクライアントに送信されます。リダイレクトが発生した場合にのみ応答で返されるリダイレクト応答ヘッダーと異なり、カスタム応答ヘッダーはどの応答においても必ず返されます。

概要

<isapiFilters> コレクションの <filter> 要素は、クライアントの要求データまたはサーバーの応答データを処理するように ISAPI フィルターを構成します。

互換性

  IIS 7.0 IIS 6.0
注意 <isapiFilters> コレクションの <filter> は IIS 7.0 で新たに導入された要素です。

<isapiFilters> コレクションは、IIS 6.0 のメタベース プロパティ FilterEnableCache および FilterPath に代わるものです。

セットアップ

<isapiFilters> 要素を使用するには、IIS 7.0 サーバー上に ISAPI フィルター モジュールをインストールする必要があります。それには、次の手順を実行します。

Windows Server 2008

  1. タスク バーで [スタート] ボタンをクリックし、[管理ツール] をポイントして [サーバー マネージャー] をクリックします。

  2. [サーバー マネージャー] ウィンドウのツリー表示で、[役割] を展開して [Web サーバー (IIS)] をクリックします。

  3. [Web サーバー (IIS)] ウィンドウで、[役割サービス] セクションまでスクロールして [役割サービスの追加] をクリックします。

  4. 役割サービスの追加ウィザードの [役割サービスの選択] ページで、[ISAPI フィルター] を選択して、[次へ] をクリックします。

    拡大

  5. [インストール オプションの確認] ページで [インストール] をクリックします。

  6. [結果] ページで [閉じる] をクリックします。

Windows Vista

  1. タスク バーで [スタート] ボタンをクリックし、[コントロール パネル] をクリックします。

  2. コントロール パネルで、[プログラムと機能][Windows の機能の有効化または無効化] の順にクリックします。

  3. [Windows の機能] ダイアログ ボックスで、[Internet Information Services][World Wide Web サービス][アプリケーション開発機能] の順に展開します。

    拡大

  4. [ISAPI フィルター] を選択して、[OK] をクリックします。

方法

ISAPI フィルターを追加する方法

  1. タスク バーで [スタート] ボタンをクリックし、[管理ツール] をポイントして [インターネット インフォメーション サービス (IIS) マネージャー] をクリックします。

  2. [接続] ウィンドウで、ページ出力のキャッシュを構成する接続、サイト、アプリケーション、またはディレクトリに移動します。

  3. [ホーム] ウィンドウで [ISAPI フィルター] をダブルクリックします。

    拡大

  4. [操作] ウィンドウで [追加] をクリックします。

  5. [ISAPI フィルターの追加] ダイアログ ボックスの [フィルター名] テキスト ボックスで、わかりやすい ISAPI フィルターの名前を入力します。

  6. [実行可能ファイル] ボックスで、ISAPI フィルター ファイルの場所のファイル システム パスを入力するか、または、[...] ボタンをクリックして ISAPI フィルター ファイルのあるフォルダーに移動し、[OK] をクリックします。

    拡大

構成

属性

属性 説明
enableCache オプションの Boolean 属性。

フィルターされたサーバーの応答に対する HTTP.sys キャッシュを有効にする (true) か無効にする (false) かを指定します。

既定値は false です。
enabled オプションの Boolean 属性。

インストールされたフィルターを有効にする (true) か無効にする (false) かを指定します。

既定値は true です。
name 必須の string 属性。

ISAPI フィルターの一意の名前を指定します。
path 必須の string 属性。

ISAPI フィルター .dll ファイルの完全な物理パスを指定します。
preCondition オプションの string 属性。

ISAPI フィルターを実行する条件を指定します。

preCondition 属性には、次の値のうち、1 つ以上の値を指定できます。複数の値を指定する場合はコンマ (,) で区切ります。

--------------------------------------------------------------------------------------------------

値:bitness32

説明:

  • ISAPI フィルターが 32 ビットの .dll ファイルの場合で、64 ビットのオペレーティング システム上で WOW64 モード (32 ビット シミュレーション) で動作するワーカー プロセスに対してのみ IIS でフィルターをロードするように設定する場合は、値として bitness32 を指定します。

値:bitness64

説明:

  • ISAPI フィルターが 64 ビットの .dll ファイルの場合で、64 ビット モードで動作するワーカー プロセスに対してのみ IIS でフィルターをロードするように設定する場合は、値として bitness64 を指定します。

値:integratedMode

説明:

  • 管理コンテンツに対する要求の処理に、統合要求処理パイプラインを使用するように ISAPI フィルターを設定する場合は、値として integratedMode を指定します。

値:ISAPIMode

説明:

  • 管理コンテンツに対する要求の処理に、ASP.NET ISAPI 拡張機能 (Aspnet_isapi.dll) を使用するように ISAPI フィルターを設定する場合は、値として ISAPIMode を指定します。

値:runtimeVersionv1.1

説明:

  • .NET Framework バージョン 1.1 を使用するように構成されたアプリケーション プールに対してのみ ISAPI フィルターをロードするように設定する場合は、値として runtimeVersionv1.1 を指定します。

値:runtimeVersionv2.0

説明:

  • .NET Framework バージョン 2.0 を使用するように構成されたアプリケーション プールに対してのみ ISAPI フィルターをロードするように設定する場合は、値として runtimeVersionv2.0 を指定します。

子要素

なし。

構成サンプル

次の構成例が Web.config ファイルに追加されると、SalesQueryIsapi という ISAPI フィルターが Web サイトまたはアプリケーションに追加されます。サンプルでは、name 属性と enabled 属性を使用して ISAPI フィルターに名前を付けて有効にします。また、enableCache 属性を使用して HTTP.sys キャッシュを無効にし、path 属性を使用して ISAPI DLL の場所を指定します。

<configuration>
   <system.webServer>
      <isapiFilters>
         <filter 
            name="SalesFilter" 
            enabled="true" 
            enableCache="false" 
            path="C:\Inetpub\filters\SalesFilter.dll" />
      </isapiFilters>
   </system.webServer>

</configuration>

サンプル コード

次の例では、サーバー上で SalesQueryIsapi という ISAPI フィルターを構成します。各サンプルでは、name プロパティを使用して ISAPI フィルターに名前を指定し、enableCache プロパティで HTTP.sys キャッシュを無効にし、path プロパティで ISAPI DLL の場所を指定します。

AppCmd.exe

appcmd.exe set config -section:system.webServer/isapiFilters /+"[name='SalesQueryIsapi',path='c:\Inetpub\www.contoso.com\filters\SalesQueryIsapi.dll',enabled='True',enableCache='True']" /commit:apphost

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection isapiFiltersSection = config.GetSection("system.webServer/isapiFilters");
         ConfigurationElementCollection isapiFiltersCollection = isapiFiltersSection.GetCollection();

         ConfigurationElement filterElement = isapiFiltersCollection.CreateElement("filter");
         filterElement["name"] = @"SalesQueryIsapi";
         filterElement["path"] = @"c:\Inetpub\www.contoso.com\filters\SalesQueryIsapi.dll";
         filterElement["enabled"] = true;
         filterElement["enableCache"] = true;
         isapiFiltersCollection.Add(filterElement);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim isapiFiltersSection As ConfigurationSection = config.GetSection("system.webServer/isapiFilters")
      Dim isapiFiltersCollection As ConfigurationElementCollection = isapiFiltersSection.GetCollection
      Dim filterElement As ConfigurationElement = isapiFiltersCollection.CreateElement("filter")
      filterElement("name") = "SalesQueryIsapi"
      filterElement("path") = "c:\Inetpub\www.contoso.com\filters\SalesQueryIsapi.dll"
      filterElement("enabled") = True
      filterElement("enableCache") = True
      isapiFiltersCollection.Add(filterElement)
      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var isapiFiltersSection = adminManager.GetAdminSection("system.webServer/isapiFilters", "MACHINE/WEBROOT/APPHOST");
var isapiFiltersCollection = isapiFiltersSection.Collection;

var filterElement = isapiFiltersCollection.CreateNewElement("filter");
filterElement.Properties.Item("name").Value = "SalesQueryIsapi";
filterElement.Properties.Item("path").Value = "c:\\Inetpub\\www.contoso.com\\filters\\SalesQueryIsapi.dll";
filterElement.Properties.Item("enabled").Value = true;
filterElement.Properties.Item("enableCache").Value = true;
isapiFiltersCollection.AddElement(filterElement);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set isapiFiltersSection = adminManager.GetAdminSection("system.webServer/isapiFilters", "MACHINE/WEBROOT/APPHOST")
Set isapiFiltersCollection = isapiFiltersSection.Collection

Set filterElement = isapiFiltersCollection.CreateNewElement("filter")
filterElement.Properties.Item("name").Value = "SalesQueryIsapi"
filterElement.Properties.Item("path").Value = "c:\\Inetpub\\www.contoso.com\\filters\\SalesQueryIsapi.dll"
filterElement.Properties.Item("enabled").Value = True
filterElement.Properties.Item("enableCache").Value = True
isapiFiltersCollection.AddElement filterElement

adminManager.CommitChanges()