Bagikan melalui


Handler handler <>

Gambaran Umum

Elemen <handlers> menentukan handler yang terdaftar untuk ekstensi atau URL nama file tertentu.

Handler adalah komponen Internet Information Services (IIS) yang dikonfigurasi untuk memproses permintaan ke konten tertentu, biasanya untuk menghasilkan respons untuk sumber daya permintaan. Misalnya, halaman Web ASP.NET adalah salah satu jenis handler. Anda dapat menggunakan handler untuk memproses permintaan ke sumber daya apa pun yang perlu mengembalikan informasi kepada pengguna yang bukan file statis. IIS menyediakan beberapa jenis handler yang berbeda untuk mendukung file statis, aplikasi Common Gateway Interface (CGI), aplikasi FastCGI, dan ekstensi Internet Server API (ISAPI). ASP.NET juga menyediakan dukungan untuk jenis handler tambahan melalui antarmuka handler HTTP.

Pengembang dapat membuat handler kustom untuk melakukan penanganan khusus yang dapat Anda identifikasi menggunakan ekstensi nama file di aplikasi Anda. Misalnya, jika pengembang membuat handler yang membuat XML berformat RSS, Anda dapat mengikat ekstensi nama file .rss di aplikasi Anda ke handler kustom. Pengembang juga dapat membuat handler yang memetakan ke file tertentu dan dapat mengimplementasikan handler ini sebagai modul asli atau sebagai implementasi antarmuka IHttpHandler ASP.NET.

Kompatibilitas

Versi Catatan
IIS 10.0 Elemen <handlers> tidak dimodifikasi dalam IIS 10.0.
IIS 8.5 Elemen <handlers> tidak dimodifikasi dalam IIS 8.5.
IIS 8.0 Elemen <handlers> tidak dimodifikasi dalam IIS 8.0.
IIS 7.5 Elemen <handlers> tidak dimodifikasi dalam IIS 7.5.
IIS 7.0 Elemen ini <handlers> diperkenalkan di IIS 7.0.
IIS 6.0 T/A

Siapkan

Elemen <handlers> ini disertakan dalam penginstalan default IIS 7.

Bagaimana Caranya

Cara membuat pemetaan handler untuk handler ASP.NET dalam aplikasi IIS 7 yang berjalan dalam mode Terintegrasi

  1. Buka Pengelola Layanan Informasi Internet (IIS):

    • Jika Anda menggunakan Windows Server 2012 atau Windows Server 2012 R2:

      • Pada bilah tugas, klik Manajer Server, klik Alat, lalu klik Pengelola Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows 8 atau Windows 8.1:

      • Tahan tombol Windows, tekan huruf X, lalu klik Panel Kontrol.
      • Klik Alat Administratif, lalu klik dua kali Manajer Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows Server 2008 atau Windows Server 2008 R2:

      • Pada bilah tugas, klik Mulai, arahkan ke Alat Administratif, lalu klik Pengelola Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows Vista atau Windows 7:

      • Pada taskbar, klik Mulai, lalu klik Panel Kontrol.
      • Klik dua kali Alat Administratif, lalu klik dua kali Manajer Layanan Informasi Internet (IIS).
  2. Di panel Koneksi , klik koneksi server yang ingin Anda tambahkan modul aslinya.

  3. Di panel Beranda , klik dua kali Pemetaan Handler.
    Cuplikan layar panel Beranda dengan fitur Pemetaan Handler dipilih.

  4. Pada panel Tindakan , klik Tambahkan Handler Terkelola...

  5. Dalam kotak dialog Tambahkan Handler Terkelola , tentukan hal berikut ini:

    • Jalur Permintaan. Nama file atau ekstensi nama file yang akan dipetakan.

    • Jenis. Nama jenis (kelas) handler terkelola. Jika handler didefinisikan dalam folder app_code atau bin aplikasi, nama jenisnya akan muncul di daftar drop-down.

    • Nama. Nama deskriptif.

      Cuplikan layar memperlihatkan kotak dialog Tambahkan Handler Terkelola dengan bidang untuk Jalur Permintaan, Jenis, dan Nama.

  6. Klik OK untuk menutup kotak dialog Tambahkan Handler Terkelola .

Cara membuat pemetaan handler FastCGI

  1. Buka Pengelola Layanan Informasi Internet (IIS):

    • Jika Anda menggunakan Windows Server 2012 atau Windows Server 2012 R2:

      • Pada bilah tugas, klik Manajer Server, klik Alat, lalu klik Pengelola Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows 8 atau Windows 8.1:

      • Tahan tombol Windows, tekan huruf X, lalu klik Panel Kontrol.
      • Klik Alat Administratif, lalu klik dua kali Manajer Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows Server 2008 atau Windows Server 2008 R2:

      • Pada bilah tugas, klik Mulai, arahkan ke Alat Administratif, lalu klik Pengelola Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows Vista atau Windows 7:

      • Pada taskbar, klik Mulai, lalu klik Panel Kontrol.
      • Klik dua kali Alat Administratif, lalu klik dua kali Manajer Layanan Informasi Internet (IIS).
  2. Di panel Koneksi , klik nama server yang ingin Anda konfigurasikan pemetaan penangan FastCGI.

  3. Di panel Beranda , klik dua kali Pemetaan Handler.
    Cuplikan layar menampilkan panel Beranda Server dengan fitur Pemetaan Handler dipilih.

  4. Di panel Tindakan , klik Tambahkan Pemetaan Modul...

    Catatan

    Agar langkah berikutnya berfungsi, Anda harus sudah menginstal biner yang akan menjalankan jalur file atau ekstensi nama file yang Anda tentukan. Contoh ini menggunakan implementasi PHP yang tersedia dari situs Web Microsoft.

  5. Ketik ekstensi nama file, seperti.php di kotak Jalur permintaan , klik FastCGIModule di daftar drop-down Modul, ketik jalur ke mesin skrip (dalam contoh ini, PHP-CGI.exe) di kotak Dapat Dieksekusi , lalu klik OK.
    Cuplikan layar kotak dialog Tambahkan Pemetaan Modul dengan Modul Fast C G I dipilih dari daftar drop-down Modul.

  6. Pada kotak dialog Tambahkan Pemetaan Modul , klik Ya.
    Cuplikan layar memperlihatkan kotak dialog Tambahkan Pemetaan Modul yang menanyakan apakah Anda ingin membuat aplikasi Fast C G I untuk executable.

Konfigurasi

Elemen <handlers> berisi kumpulan <add> elemen, yang masing-masing mendefinisikan pemetaan handler untuk aplikasi. Elemen <add> berisi nama handler, ekstensi nama file atau masker jalur URL yang dipetakan handler, dan nama modul atau ASP.NET jenis handler HTTP yang menentukan implementasi handler, di antara pengaturan lainnya.

Anda mengonfigurasi <handlers> elemen di tingkat aplikasi dalam file Web.config.

Atribut

Atribut Deskripsi
accessPolicy Atribut bendera opsional.

Menentukan jenis akses yang diizinkan untuk seluruh pengumpulan handler.

Atribut accessPolicy dapat menjadi salah satu nilai yang mungkin berikut. Default adalah Read.
Nilai Deskripsi
Execute Mengaktifkan handler dalam kumpulan handler yang memerlukan hak eksekusi dalam direktori dan file.
None Menonaktifkan semua handler dalam kumpulan handler yang memerlukan akses ke direktori atau file.
NoRemoteExecute Mencegah handler dalam pengumpulan handler menjalankan executable saat handler menerima permintaan jarak jauh.
NoRemoteRead Mencegah handler dalam kumpulan handler membaca file saat handler menerima permintaan jarak jauh.
NoRemoteScript Mencegah handler dalam kumpulan handler menjalankan skrip saat handler menerima permintaan jarak jauh.
NoRemoteWrite Mencegah handler dalam kumpulan handler membuat atau mengubah file saat handler menerima permintaan jarak jauh.
Read Mengaktifkan handler dalam kumpulan handler yang memerlukan akses baca ke direktori dan file.
Script Mengaktifkan handler dalam kumpulan handler yang memerlukan hak skrip ke direktori atau file.
Source Mengaktifkan handler dalam koleksi handler yang memerlukan akses baca ke kode sumber (bersama dengan bendera Baca ) atau menulis akses ke kode sumber (bersama dengan bendera Tulis ).
Write Mengaktifkan handler dalam kumpulan handler yang memerlukan akses tulis ke direktori dan file.

Elemen Anak

Elemen Deskripsi
add Elemen opsional.

Menambahkan handler ke kumpulan handler.
clear Elemen opsional.

Menghapus semua referensi ke handler dari koleksi handler.
remove Elemen opsional.

Menghapus referensi ke handler dari koleksi handler.

Sampel Konfigurasi

Contoh berikut berisi dua <add> elemen yang menentukan pemetaan handler. Elemen pertama <add> mendefinisikan handler SampleHandler untuk aplikasi Web yang berjalan dalam mode Terintegrasi IIS 7. Jika Anda menambahkan rakitan handler ke direktori app_code untuk aplikasi Web, Anda tidak perlu menyertakan nama rakitan dalam nilai untuk atribut jenis . Elemen kedua <add> mendefinisikan pemetaan untuk permintaan PHP yang menggunakan modul FastCGI.

<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>

Kode Sampel

Contoh berikut menambahkan pemetaan FastCGI untuk modul PHP, lalu menambahkan handler di situs Web Contoso yang akan memproses permintaan PHP.

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']"

Catatan

Contoh kedua ini menunjukkan cara menambahkan pemetaan handler ASP.NET baru bernama SampleHandler.new untuk URL tertentu ke aplikasi 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()