Freigeben über


Handlerhandler <>

Überblick

Das <handlers> Element definiert die Handler, die für eine bestimmte Dateinamenerweiterung oder URL registriert sind.

Handler sind Iis-Komponenten (Internet Information Services), die für die Verarbeitung von Anforderungen an bestimmte Inhalte konfiguriert sind, in der Regel zum Generieren einer Antwort für die Anforderungsressource. Beispielsweise ist eine ASP.NET Webseite ein Handlertyp. Sie können Handler verwenden, um Anforderungen an jede Ressource zu verarbeiten, die Informationen an Benutzer zurückgeben muss, die keine statische Datei sind. IIS stellt verschiedene Handlertypen bereit, um statische Dateien, CGI-Anwendungen (Common Gateway Interface), FastCGI-Anwendungen und ISAPI-Erweiterungen (Internet Server API) zu unterstützen. ASP.NET bietet auch Unterstützung für zusätzliche Handlertypen über die HTTP-Handlerschnittstelle.

Entwickler können benutzerdefinierte Handler erstellen, um eine spezielle Behandlung durchzuführen, die Sie mithilfe von Dateinamenerweiterungen in Ihrer Anwendung identifizieren können. Wenn ein Entwickler beispielsweise einen Handler erstellt hat, der RSS-formatiertes XML erstellt hat, können Sie die .rss Dateinamenerweiterung in Ihrer Anwendung an den benutzerdefinierten Handler binden. Entwickler können auch Handler erstellen, die einer bestimmten Datei zugeordnet sind, und diese Handler als systemeigene Module oder als Implementierungen der ASP.NET IHttpHandler-Schnittstelle implementieren.

Compatibility

Version Hinweise
IIS 10.0 Das <handlers> Element wurde in IIS 10.0 nicht geändert.
IIS 8.5 Das <handlers> Element wurde in IIS 8.5 nicht geändert.
IIS 8.0 Das <handlers> Element wurde in IIS 8.0 nicht geändert.
IIS 7.5 Das <handlers> Element wurde in IIS 7.5 nicht geändert.
IIS 7.0 Das <handlers> Element wurde in IIS 7.0 eingeführt.
IIS 6.0 N/A

Konfiguration

Das <handlers> Element ist in der Standardinstallation von IIS 7 enthalten.

Anleitung

Erstellen einer Handlerzuordnung für einen ASP.NET-Handler in einer IIS 7-Anwendung, die im integrierten Modus ausgeführt wird

  1. Internetinformationsdienste(IIS)-Manager öffnen:

    • Wenn Sie Windows Server 2012 oder Windows Server 2012 R2 verwenden:

      • Klicken Sie auf der Taskleiste auf "Server-Manager", auf "Extras" und dann auf " Internetinformationsdienste(IIS)-Manager".
    • Wenn Sie Windows 8 oder Windows 8.1 verwenden:

      • Halten Sie die Windows-Taste gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf " Systemsteuerung".
      • Klicken Sie auf "Verwaltungstools", und doppelklicken Sie dann auf den IIS-Manager (InternetInformationsdienste).
    • Wenn Sie Windows Server 2008 oder Windows Server 2008 R2 verwenden:

      • Klicken Sie auf der Taskleiste auf "Start", zeigen Sie auf "Verwaltungstools", und klicken Sie dann auf den IIS-Manager (InternetInformationsdienste).
    • Wenn Sie Windows Vista oder Windows 7 verwenden:

      • Klicken Sie auf der Taskleiste auf "Start" und dann auf " Systemsteuerung".
      • Doppelklicken Sie auf "Verwaltungstools", und doppelklicken Sie dann auf den IIS-Manager (InternetInformationsdienste).
  2. Klicken Sie im Bereich "Verbindungen " auf die Serververbindung, der Sie das systemeigene Modul hinzufügen möchten.

  3. Doppelklicken Sie im Startbereich auf Handlerzuordnungen.
    Screenshot des Startbereichs mit ausgewähltem Feature

  4. Klicken Sie im Bereich "Aktionen " auf " Verwalteter Handler hinzufügen"...

  5. Geben Sie im Dialogfeld " Verwalteten Handler hinzufügen " Folgendes an:

    • Anforderungspfad. Der Dateiname oder die Dateinamenerweiterung, die zugeordnet werden soll.

    • Geben Sie ein. Der Typ (Klassenname) des verwalteten Handlers. Wenn der Handler in den Ordnern app_code oder Bins der Anwendung definiert ist, wird der Typname in der Dropdownliste angezeigt.

    • Name. Ein beschreibender Name.

      Screenshot des Dialogfelds

  6. Klicken Sie auf "OK ", um das Dialogfeld " Verwalteten Handler hinzufügen " zu schließen.

So erstellen Sie eine FastCGI-Handlerzuordnung

  1. Internetinformationsdienste(IIS)-Manager öffnen:

    • Wenn Sie Windows Server 2012 oder Windows Server 2012 R2 verwenden:

      • Klicken Sie auf der Taskleiste auf "Server-Manager", auf "Extras" und dann auf " Internetinformationsdienste(IIS)-Manager".
    • Wenn Sie Windows 8 oder Windows 8.1 verwenden:

      • Halten Sie die Windows-Taste gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf " Systemsteuerung".
      • Klicken Sie auf "Verwaltungstools", und doppelklicken Sie dann auf den IIS-Manager (InternetInformationsdienste).
    • Wenn Sie Windows Server 2008 oder Windows Server 2008 R2 verwenden:

      • Klicken Sie auf der Taskleiste auf "Start", zeigen Sie auf "Verwaltungstools", und klicken Sie dann auf den IIS-Manager (InternetInformationsdienste).
    • Wenn Sie Windows Vista oder Windows 7 verwenden:

      • Klicken Sie auf der Taskleiste auf "Start" und dann auf " Systemsteuerung".
      • Doppelklicken Sie auf "Verwaltungstools", und doppelklicken Sie dann auf den IIS-Manager (InternetInformationsdienste).
  2. Klicken Sie im Bereich "Verbindungen " auf den Servernamen, für den Sie FastCGI-Handlerzuordnungen konfigurieren möchten.

  3. Doppelklicken Sie im Startbereich auf Handlerzuordnungen.
    Screenshot zeigt den Bereich

  4. Klicken Sie im Bereich "Aktionen " auf "Modulzuordnung hinzufügen"...

    Hinweis

    Damit die nächsten Schritte ausgeführt werden können, müssen Sie bereits Binärdateien installiert haben, die den von Ihnen angegebenen Dateipfad oder die Dateinamenerweiterung ausführen. In diesem Beispiel wird eine PHP-Implementierung verwendet, die von der Microsoft-Website zur Verfügung steht.

  5. Geben Sie die Dateinamenerweiterung ein, z. B. as.php im Feld "Pfad anfordern", klicken Sie in der Dropdownliste "Modul" auf "FastCGIModule", geben Sie den Pfad zum Skriptmodul (in diesem Beispiel PHP-CGI.exe) in das Feld "Ausführbare Datei" ein, und klicken Sie dann auf "OK".
    Screenshot des Dialogfelds

  6. Klicken Sie im Dialogfeld "Modulzuordnung hinzufügen " auf "Ja".
    Screenshot des Dialogfelds

Konfiguration

Das <handlers> Element enthält eine Auflistung von <add> Elementen, von denen jede eine Handlerzuordnung für die Anwendung definiert. Das <add> Element enthält den Namen des Handlers, die Dateinamenerweiterung oder das URL-Pfadformat, dem der Handler zugeordnet ist, und den Modulnamen oder ASP.NET HTTP-Handlertyp, der die Handlerimplementierung unter anderem angibt.

Sie konfigurieren das <handlers> Element auf Anwendungsebene in der datei Web.config.

Attribute

Merkmal Description
accessPolicy Optionale Flags-Attribut.

Gibt an, welche Zugriffsebene für die gesamte Handlers -Auflistung verwendet werden soll.

Das accessPolicy-Attribut kann einer der folgenden möglichen Werte sein: Der Standardwert lautet Read.
Wert Description
Execute Aktiviert Handler in der Handlersammlung, die Ausführungsrechte in Verzeichnissen und Dateien erfordern.
None Deaktiviert alle Handler in der Handlersammlung, die Zugriff auf Verzeichnisse oder Dateien erfordern.
NoRemoteExecute Verhindert, dass Handler in der Handlerauflistung ausführbare Dateien ausführen, wenn ein Handler eine Remoteanforderung empfängt.
NoRemoteRead Verhindert, dass Handler in der Handlersammlung Dateien lesen, wenn ein Handler eine Remoteanforderung empfängt.
NoRemoteScript Verhindert, dass Handler in der Handlerauflistung Skripts ausführen, wenn ein Handler eine Remoteanforderung empfängt.
NoRemoteWrite Verhindert, dass Handler in der Handlersammlung Dateien erstellen oder ändern, wenn ein Handler eine Remoteanforderung empfängt.
Read Aktiviert Handler in der Handlersammlung, die Lesezugriff auf Verzeichnisse und Dateien erfordern.
Script Aktiviert Handler in der Handlersammlung, für die Skriptrechte für Verzeichnisse oder Dateien erforderlich sind.
Source Aktiviert Handler in der Handlerauflistung, die Lesezugriff auf Quellcode (zusammen mit dem Read-Flag ) oder Schreibzugriff auf Quellcode (zusammen mit dem Write-Flag ) erfordern.
Write Aktiviert Handler in der Handlersammlung, die Schreibzugriff auf Verzeichnisse und Dateien erfordern.

Hinweis

Das accessPolicy Attribut ist keine erzwingbare Sicherheitsrichtlinie, sondern ein Filtermechanismus, der bestimmt, welche Handler basierend auf ihrem requiredAccess Attribut ausgeführt werden, wenn sie konfiguriert sind. Ein gefilterter Handler ist weiterhin Teil der Konfiguration und kann initialisiert werden, obwohl er nicht basierend auf diesem Attribut ausgeführt werden kann.

Untergeordnete Elemente

Element Description
add Optionales Element.

Fügt der Auflistung von Handlern einen Handler hinzu.
clear Optionales Element.

Entfernt alle Verweise auf Handler aus der Handlers -Auflistung.
remove Optionales Element.

Entfernt einen Verweis auf einen Handler aus der Handlers -Auflistung.

Konfigurationsbeispiel

Das folgende Beispiel enthält zwei <add> Elemente, die Handlerzuordnungen definieren. Das erste <add> Element definiert einen SampleHandler-Handler für eine Webanwendung, die im integrierten IIS 7-Modus ausgeführt wird. Wenn Sie die Handlerassembly zum verzeichnis app_code für die Webanwendung hinzufügen, müssen Sie den Assemblynamen nicht in den Wert für das Typattribute einschließen. Das zweite <add> Element definiert eine Zuordnung für PHP-Anforderungen, die das FastCGI-Modul verwenden.

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

Beispielcode

Die folgenden Beispiele fügen eine FastCGI-Zuordnung für ein PHP-Modul hinzu, und fügen Sie dann einen Handler auf der Contoso-Website hinzu, die PHP-Anforderungen verarbeitet.

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

Hinweis

In diesem zweiten Beispiel wird gezeigt, wie Sie eine neue ASP.NET-Handlerzuordnung namens "SampleHandler.new" für eine bestimmte URL zu einer Webanwendung hinzufügen.

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