ハンドラーの追加: <add>
概要
<handlers>
コレクションの <add>
要素は、インターネット インフォメーション サービス (IIS) 7 用の HTTP ハンドラーのリストにハンドラーを追加します。
互換性
バージョン | メモ |
---|---|
IIS 10.0 | <add> 要素は IIS 10.0 では変更されませんでした。 |
IIS 8.5 | <add> 要素は IIS 8.5 では変更されませんでした。 |
IIS 8.0 | <add> 要素は IIS 8.0 では変更されませんでした。 |
IIS 7.5 | <add> 要素は IIS 7.5 では変更されませんでした。 |
IIS 7.0 | <handlers> コレクションの <add> 要素は IIS 7.0 で導入されました。 |
IIS 6.0 | 該当なし |
段取り
<handlers>
コレクションの <add>
要素は、IIS 7 の既定のインストールに含まれています。
操作方法
統合モードで実行されている IIS 7 アプリケーションで ASP.NET ハンドラーのハンドラー マッピングを作成する方法
インターネット インフォメーション サービス (IIS) マネージャーを開きます。
Windows Server 2012 または Windows Server 2012 R2 を使用している場合:
- タスク バーで、[サーバー マネージャー] をクリックし、[ツール]、[インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
Windows 8 または Windows 8.1 を使用している場合:
- Windows キーを押しながら文字 X を押し、[コントロール パネル] をクリックします。
- [管理ツール] をクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
Windows Server 2008 または Windows Server 2008 R2 を使用している場合:
- タスク バーで、[スタート] ボタンをクリックし、[管理ツール]、[インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
Windows Vista または Windows 7 を使用している場合:
- タスク バーで、[スタート]、[コントロール パネル] の順にクリックします。
- [管理ツール] をダブルクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
[接続] ペインで、ネイティブ モジュールを追加するサーバー接続をクリックします。
[ホーム] ペインで、[ハンドラー マッピング] をダブルクリックします。
[操作] ペインで、[マネージド ハンドラーの追加] をクリックします。
[マネージド ハンドラーの追加] ダイアログ ボックスで、以下を指定します。
[要求パス]。 マップするファイル名またはファイル名拡張子。
Type。 マネージド ハンドラーの型 (クラス) の名前。 ハンドラーがアプリケーションの app_code または bin フォルダーで定義されている場合、その型の名前がドロップダウン リストに表示されます。
名前。 わかりやすい名前。
[OK] をクリックして [マネージド ハンドラーの追加] ダイアログ ボックスを閉じます。
FastCGI のハンドラー マッピングを作成する方法
インターネット インフォメーション サービス (IIS) マネージャーを開きます。
Windows Server 2012 または Windows Server 2012 R2 を使用している場合:
- タスク バーで、[サーバー マネージャー] をクリックし、[ツール]、[インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
Windows 8 または Windows 8.1 を使用している場合:
- Windows キーを押しながら文字 X を押し、[コントロール パネル] をクリックします。
- [管理ツール] をクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
Windows Server 2008 または Windows Server 2008 R2 を使用している場合:
- タスク バーで、[スタート] ボタンをクリックし、[管理ツール]、[インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
Windows Vista または Windows 7 を使用している場合:
- タスク バーで、[スタート]、[コントロール パネル] の順にクリックします。
- [管理ツール] をダブルクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
[接続] ペインで、FastCGI ハンドラー マッピングを構成するサーバー名をクリックします。
[ホーム] ウィンドウで、[ハンドラー マッピング] をダブルクリックします。
[操作] ペインで、[モジュール マッピングの追加] をクリックします。
Note
次の手順を実行するには、指定するファイル パスまたはファイル名拡張子を実行するバイナリが既にインストールされている必要があります。 この例では、Microsoft の Web サイトから利用できる PHP の実装を使います。
[要求パス] ボックスにファイル名拡張子 (.php など) を入力し、[モジュール] ドロップダウン リストで [FastCGIModule] をクリックし、[実行可能ファイル] ボックスにスクリプト エンジン (この例では、PHP-CGI.exe) へのパスを入力して、[OK] をクリックします。
[モジュール マッピングの追加] ダイアログ ボックスで、[はい] をクリックします。
構成
属性
属性 | 説明 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
allowPathInfo |
省略可能な Boolean 属性です。 ハンドラーが URI 内の完全なパスの情報 (contoso/marketing/imageGallery.aspx など) を処理するかどうかを指定します。 値が true の場合、ハンドラーは完全なパス contoso/marketing/imageGallery を処理します。 値が false の場合、ハンドラーはパスの最後のセクション /imageGallery のみを処理します。 既定値は false です。 |
||||||||||||||
modules |
省略可能な文字列属性。 ファイル名またはファイル名と拡張子をマップする 1 つまたは複数のモジュールの名前を指定します。 複数の値を指定する場合は、値をコンマ (,) で区切ります。 既定値は ManagedPipelineHandler です。 |
||||||||||||||
name |
必須の文字列属性です。 ハンドラー マッピングの一意の名前を指定します。 |
||||||||||||||
path |
必須の文字列属性です。 ハンドラー マッピングを適用するファイル名またはファイル名拡張子を指定します。 |
||||||||||||||
preCondition |
省略可能な文字列属性。 ハンドラーを実行する条件を指定します。 preCondition 属性には、次の使用可能な値のうち 1 つ以上を指定できます。 複数の値を指定する場合は、値をコンマ (,) で区切ります。
|
||||||||||||||
requireAccess |
省略可能な列挙型属性。 ハンドラーがリソースに対して必要なアクセスの種類を指定します。 requireAccess 属性には、次の使用可能な値の 1 つ以上を指定できます。 複数の値を指定する場合は、値をコンマ (,) で区切ります。 既定値は Script です。
|
||||||||||||||
resourceType |
省略可能な文字列属性。 ハンドラー マッピングを適用するリソースの種類を指定します。 resourceType 属性には、次の使用可能な値の 1 つを指定できます。 既定値は Unspecified です。
|
||||||||||||||
responseBufferLimit |
省略可能な uint 属性。 要求ハンドラー用の応答バッファーの最大サイズ (バイト単位) を指定します。 既定値は 4194304 バイトです。 |
||||||||||||||
scriptProcessor |
省略可能な文字列属性。 要求を処理する ISAPI 拡張機能の .dll ファイルまたは Common Gateway Interface (CGI) の .exe ファイルの物理パスを指定します。 scriptProcessor 属性は、スクリプト マップ ハンドラーのマッピングにのみ必要です。 ハンドラーを ISAPI 拡張機能にマップする場合は、modules 属性に ISAPIModule を指定する必要があります。 ハンドラーを CGI ファイルにマップする場合は、modules 属性に CGIModule を指定する必要があります。 |
||||||||||||||
type |
省略可能な文字列属性。 マネージド ハンドラーの名前空間パスを指定します。 type 属性は、マネージド ハンドラーに対してのみ必要です。 |
||||||||||||||
verb |
必須の文字列属性です。 ハンドラー マッピングを適用する HTTP 動詞を指定します。 |
子要素
なし。
構成サンプル
次の例には、ハンドラー マッピングを定義する 2 つの <add>
要素が含まれています。 1 番目の <add>
要素では、IIS 7 統合モードで実行されている Web アプリケーションの SampleHandler ハンドラーを定義しています。 ハンドラー アセンブリを Web アプリケーションの app_code ディレクトリに追加する場合、type 属性の値にアセンブリ名を含める必要はありません。 2 番目の <add>
要素では、FastCGI モジュールを使う PHP 要求のマッピングを定義しています。
<handlers>
<add name="SampleHandler" verb="*"
path="SampleHandler.new"
type="SampleHandler, SampleHandlerAssembly"
resourceType="Unspecified" />
<add name="PHP-FastCGI" verb="*"
path="*.php"
modules="FastCgiModule"
scriptProcessor="c:\php\php-cgi.exe"
resourceType="Either" />
</handlers>
サンプル コード
次の例では、PHP モジュールの FastCGI マッピングを追加してから、PHP 要求を処理するハンドラーを Contoso Web サイトに追加します。
AppCmd.exe
appcmd.exe set config -section:system.webServer/fastCgi /+"[fullPath='c:\php\php-cgi.exe']" /commit:apphost
appcmd.exe set config "Contoso" -section:system.webServer/handlers /+"[name='PHP-FastCGI',path='*.php',verb='GET,HEAD,POST',modules='FastCgiModule',scriptProcessor='c:\php\php-cgi.exe',resourceType='Either']"
Note
この 2 番目の例では、特定の URL に対する SampleHandler.new という名前の新しい ASP.NET ハンドラー マッピングを、Web アプリケーションに追加する方法を示します。
appcmd.exe set config /section:system.webServer/handlers /+[name=SampleHandler',path='SampleHandler.new',verb='*',type='SampleHandler']
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample
{
private static void Main()
{
using (ServerManager serverManager = new ServerManager())
{
Configuration appHostConfig = serverManager.GetApplicationHostConfiguration();
ConfigurationSection fastCgiSection = appHostConfig.GetSection("system.webServer/fastCgi");
ConfigurationElementCollection fastCgiCollection = fastCgiSection.GetCollection();
ConfigurationElement applicationElement = fastCgiCollection.CreateElement("application");
applicationElement["fullPath"] = @"c:\php\php-cgi.exe";
fastCgiCollection.Add(applicationElement);
Configuration webConfig = serverManager.GetWebConfiguration("Contoso");
ConfigurationSection handlersSection = webConfig.GetSection("system.webServer/handlers");
ConfigurationElementCollection handlersCollection = handlersSection.GetCollection();
ConfigurationElement addElement = handlersCollection.CreateElement("add");
addElement["name"] = @"PHP-FastCGI";
addElement["path"] = @"*.php";
addElement["verb"] = @"GET,HEAD,POST";
addElement["modules"] = @"FastCgiModule";
addElement["scriptProcessor"] = @"c:\php\php-cgi.exe";
addElement["resourceType"] = @"Either";
handlersCollection.AddAt(0, addElement);
serverManager.CommitChanges();
}
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim appHostConfig As Configuration = serverManager.GetApplicationHostConfiguration
Dim fastCgiSection As ConfigurationSection = appHostConfig.GetSection("system.webServer/fastCgi")
Dim fastCgiCollection As ConfigurationElementCollection = fastCgiSection.GetCollection
Dim applicationElement As ConfigurationElement = fastCgiCollection.CreateElement("application")
applicationElement("fullPath") = "c:\php\php-cgi.exe"
fastCgiCollection.Add(applicationElement)
Dim webConfig As Configuration = serverManager.GetWebConfiguration("Contoso")
Dim handlersSection As ConfigurationSection = webConfig.GetSection("system.webServer/handlers")
Dim handlersCollection As ConfigurationElementCollection = handlersSection.GetCollection
Dim addElement As ConfigurationElement = handlersCollection.CreateElement("add")
addElement("name") = "PHP-FastCGI"
addElement("path") = "*.php"
addElement("verb") = "GET,HEAD,POST"
addElement("modules") = "FastCgiModule"
addElement("scriptProcessor") = "c:\php\php-cgi.exe"
addElement("resourceType") = "Either"
handlersCollection.AddAt(0, addElement)
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var fastCgiSection = adminManager.GetAdminSection("system.webServer/fastCgi", "MACHINE/WEBROOT/APPHOST");
var fastCgiCollection = fastCgiSection.Collection;
var applicationElement = fastCgiCollection.CreateNewElement("application");
applicationElement.Properties.Item("fullPath").Value = "c:\\php\\php-cgi.exe";
fastCgiCollection.AddElement(applicationElement);
adminManager.CommitChanges();
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Contoso";
var handlersSection = adminManager.GetAdminSection("system.webServer/handlers", "MACHINE/WEBROOT/APPHOST/Contoso");
var handlersCollection = handlersSection.Collection;
var addElement = handlersCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "PHP-FastCGI";
addElement.Properties.Item("path").Value = "*.php";
addElement.Properties.Item("verb").Value = "GET,HEAD,POST";
addElement.Properties.Item("modules").Value = "FastCgiModule";
addElement.Properties.Item("scriptProcessor").Value = "c:\\php\\php-cgi.exe";
addElement.Properties.Item("resourceType").Value = "Either";
handlersCollection.AddElement(addElement, 0);
adminManager.CommitChanges();
VBScript
Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set fastCgiSection = adminManager.GetAdminSection("system.webServer/fastCgi", "MACHINE/WEBROOT/APPHOST")
Set fastCgiCollection = fastCgiSection.Collection
Set applicationElement = fastCgiCollection.CreateNewElement("application")
applicationElement.Properties.Item("fullPath").Value = "c:\php\php-cgi.exe"
fastCgiCollection.AddElement applicationElement
adminManager.CommitChanges()
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Contoso"
Set handlersSection = adminManager.GetAdminSection("system.webServer/handlers", "MACHINE/WEBROOT/APPHOST/Contoso")
Set handlersCollection = handlersSection.Collection
Set addElement = handlersCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "PHP-FastCGI"
addElement.Properties.Item("path").Value = "*.php"
addElement.Properties.Item("verb").Value = "GET,HEAD,POST"
addElement.Properties.Item("modules").Value = "FastCgiModule"
addElement.Properties.Item("scriptProcessor").Value = "c:\php\php-cgi.exe"
addElement.Properties.Item("resourceType").Value = "Either"
handlersCollection.AddElement addElement, 0
adminManager.CommitChanges()