Condividi tramite


Aggiunta di gestori <>

Panoramica

L'elemento <add><handlers> della raccolta aggiunge un gestore all'elenco di gestori HTTP per Internet Information Services (IIS) 7.

Compatibilità

Versione Note
IIS 10.0 L'elemento <add> non è stato modificato in IIS 10.0.
IIS 8,5 L'elemento <add> non è stato modificato in IIS 8.5.
IIS 8,0 L'elemento <add> non è stato modificato in IIS 8.0.
IIS 7,5 L'elemento <add> non è stato modificato in IIS 7.5.
IIS 7.0 L'elemento <add><handlers> della raccolta è stato introdotto in IIS 7.0.
IIS 6.0 N/D

Installazione

L'elemento <add><handlers> della raccolta è incluso nell'installazione predefinita di IIS 7.

Procedure

Come creare un mapping di un gestore per un gestore ASP.NET in un'applicazione IIS 7 in esecuzione in modalità integrata

  1. Aprire Gestione Internet Information Services (IIS):

    • Se si usa Windows Server 2012 o Windows Server 2012 R2:

      • Sulla barra delle applicazioni fare clic su Server Manager, scegliere Strumenti, quindi fare clic su Gestione Internet Information Services (IIS).
    • Se si usa Windows 8 o Windows 8.1:

      • Tenere premuto il tasto Windows, premere la lettera X e quindi fare clic su Pannello di controllo.
      • Fare clic su Strumenti di amministrazione, quindi fare doppio clic su Gestione Internet Information Services (IIS).
    • Se si usa Windows Server 2008 o Windows Server 2008 R2:

      • Sulla barra delle applicazioni fare clic su Start, scegliere Strumenti di amministrazione, quindi fare clic su Gestione Internet Information Services (IIS).
    • Se si usa Windows Vista o Windows 7:

      • Sulla barra delle applicazioni fare clic su Start e quindi su Pannello di controllo.
      • Fare doppio clic su Strumenti di amministrazione, quindi fare doppio clic su Gestione Internet Information Services (IIS).
  2. Nel riquadro Connessioni fare clic sulla connessione server a cui si vuole aggiungere il modulo nativo.

  3. Nel riquadro Home fare doppio clic su Mapping gestore.
    Screenshot di I S Manager che mostra la home page del sito Web predefinito. L'icona Mapping del gestore è evidenziata.

  4. Nel riquadro Azioni fare clic su Aggiungi gestore gestito...

  5. Nella finestra di dialogo Aggiungi gestore gestito specificare quanto segue:

    • Percorso richiesta. Nome file o estensione del nome file di cui eseguire il mapping.

    • Type. Nome del tipo (classe) del gestore gestito. Se il gestore è definito nelle cartelle app_code o bin dell'applicazione, il nome del tipo verrà visualizzato nell'elenco a discesa.

    • Nome. Nome descrittivo.

      Screenshot della finestra di dialogo Aggiungi gestore gestito.

  6. Fare clic su OK per chiudere la finestra di dialogo Aggiungi gestore gestito .

Come creare un mapping del gestore FastCGI

  1. Aprire Gestione Internet Information Services (IIS):

    • Se si usa Windows Server 2012 o Windows Server 2012 R2:

      • Sulla barra delle applicazioni fare clic su Server Manager, scegliere Strumenti, quindi fare clic su Gestione Internet Information Services (IIS).
    • Se si usa Windows 8 o Windows 8.1:

      • Tenere premuto il tasto Windows, premere la lettera X e quindi fare clic su Pannello di controllo.
      • Fare clic su Strumenti di amministrazione, quindi fare doppio clic su Gestione Internet Information Services (IIS).
    • Se si usa Windows Server 2008 o Windows Server 2008 R2:

      • Sulla barra delle applicazioni fare clic su Start, scegliere Strumenti di amministrazione, quindi fare clic su Gestione Internet Information Services (IIS).
    • Se si usa Windows Vista o Windows 7:

      • Sulla barra delle applicazioni fare clic su Start e quindi su Pannello di controllo.
      • Fare doppio clic su Strumenti di amministrazione, quindi fare doppio clic su Gestione Internet Information Services (IIS).
  2. Nel riquadro Connessioni fare clic sul nome del server per cui si desidera configurare i mapping dei gestori FastCGI.

  3. Nel riquadro Home fare doppio clic su Mapping gestore.
    Screenshot della finestra I S Manager che mostra la home page Server. L'icona per mapping dei gestori è evidenziata.

  4. Nel riquadro Azioni fare clic su Aggiungi mapping moduli...

    Nota

    Per il corretto funzionamento dei passaggi successivi, è necessario avere già installato file binari che eseguiranno il percorso del file o l'estensione del nome file specificata. Questo esempio usa un'implementazione PHP disponibile nel sito Web Microsoft.

  5. Digitare l'estensione del nome file, ad esempio .php nella casella Percorso richiesta , fare clic su FastCGIModule nell'elenco a discesa Modulo , digitare il percorso del motore di scripting (in questo esempio PHP-CGI.exe) nella casella Eseguibile e quindi fare clic su OK.
    Screenshot della finestra di dialogo Aggiungi mapping moduli.

  6. Nella finestra di dialogo Aggiungi mapping moduli fare clic su .
    Screenshot della finestra di dialogo Aggiungi informazioni mapping modulo.

Configurazione

Attributi

Attributo Descrizione
allowPathInfo Attributo booleano facoltativo.

Specifica se il gestore elabora le informazioni complete sul percorso in un URI, ad esempio contoso/marketing/imageGallery.aspx. Se il valore è true, il gestore elabora il percorso completo, contoso/marketing/imageGallery. Se il valore è false, il gestore elabora solo l'ultima sezione del percorso, /imageGallery.

Il valore predefinito è false.
modules Attributo stringa facoltativo.

Specifica il nome del modulo o dei moduli a cui si desidera eseguire il mapping del nome file o del nome file con estensione. Se si specificano più valori, separare i valori con una virgola (,).

Il valore predefinito è ManagedPipelineHandler.
name Attributo stringa obbligatorio.

Specifica il nome univoco del mapping del gestore.
path Attributo stringa obbligatorio.

Specifica il nome file o l'estensione del nome file per cui si applica il mapping del gestore.
preCondition Attributo stringa facoltativo.

Specifica le condizioni in cui verrà eseguito il gestore.

L'attributo preCondition può essere uno o più dei valori possibili seguenti. Se si specificano più valori, separare i valori con una virgola (,).
Valore Descrizione
bitness32 Specificare il valore bitness32 quando il gestore è un file di .dll a 32 bit e IIS deve caricare il gestore solo per i processi di lavoro eseguiti in modalità WOW64 (simulazione a 32 bit) in un sistema operativo a 64 bit.
bitness64 Specificare il valore bitness64 quando il gestore è un file di .dll a 64 bit e IIS deve caricare il gestore solo per i processi di lavoro eseguiti in modalità a 64 bit.
integratedMode Specificare il valore integratedMode quando il gestore deve rispondere solo alle richieste nei pool di applicazioni configurate per l'uso della pipeline integrata di elaborazione delle richieste.
ISAPIMode Specificare il valore ISAPIMode quando il gestore deve rispondere solo alle richieste nei pool di applicazioni configurate per l'uso della modalità classica.
runtimeVersionv1.1 Specificare il valore runtimeVersionv1.1 quando il gestore deve rispondere solo alle richieste nei pool di applicazioni configurate per l'uso di .NET Framework versione 1.1.
runtimeVersionv2.0 Specificare il valore runtimeVersionv2.0 quando il gestore deve rispondere solo alle richieste nei pool di applicazioni configurate per l'uso di .NET Framework versione 2.0.
requireAccess Attributo di enumerazione facoltativo.

Specifica il tipo di accesso richiesto da un gestore alla risorsa.

L'attributo requireAccess può essere uno o più dei valori possibili seguenti. Se si specificano più valori, separare i valori con una virgola (,). Il valore predefinito è Script.
Valore Descrizione
Eseguire Specifica che il gestore richiede diritti per l'esecuzione di file eseguibili.

Il valore numerico è 4.
Nessuno Specifica che il gestore non ha requisiti di accesso.

Il valore numerico è 0.
Lettura Specifica che il gestore richiede autorizzazioni di lettura.

Il valore numerico è 1.
Script Specifica che il gestore richiede diritti per l'esecuzione di script.

Il valore numerico è 3.
Scrittura Specifica che il gestore richiede autorizzazioni di scrittura.

Il valore numerico è 2.
resourceType Attributo stringa facoltativo.

Specifica il tipo di risorsa a cui si applica il mapping del gestore.

L'attributo resourceType può essere uno dei valori possibili seguenti. Il valore predefinito è Unspecified.
Valore Descrizione
Directory Specifica che il mapping del gestore si applica alle richieste solo per le cartelle fisiche sul disco.

Il valore numerico è 1.
Either Specifica che il mapping del gestore si applica alle richieste di file fisici o cartelle su disco.

Il valore numerico è 2.
File Specifica che il mapping del gestore si applica alle richieste solo per i file fisici su disco.

Il valore numerico è 0.
Unspecified Specifica che il tipo di mapping non è specificato. Il mapping del gestore si applica alle richieste indipendentemente dal fatto che la richiesta sia mappata a un file fisico o a una cartella su disco. Usare questa impostazione quando si esegue il mapping di un gestore a un nome file o a un'estensione di file che non esiste su disco, ad esempio MyHandler.axd.

Il valore numerico è 3.
responseBufferLimit Attributo uint facoltativo.

Specifica le dimensioni massime, in byte, del buffer di risposta per un gestore di richieste.

Il valore predefinito è 4194304 byte.
scriptProcessor Attributo stringa facoltativo.

Specifica il percorso fisico dell'estensione ISAPI .dll file o CGI (Common Gateway Interface) .exe file che elabora la richiesta.

L'attributo scriptProcessor è obbligatorio solo per i mapping dei gestori della mappa di script. Quando si esegue il mapping di un gestore a un'estensione ISAPI, è necessario specificare ISAPIModule per l'attributo modules. Quando si esegue il mapping di un gestore a un file CGI, è necessario specificare CGIModule per l'attributo modules.
type Attributo stringa facoltativo.

Specifica il percorso dello spazio dei nomi di un gestore gestito. L'attributo type è obbligatorio solo per i gestori gestiti.
verb Attributo stringa obbligatorio.

Specifica i verbi HTTP per i quali viene applicato il mapping del gestore.

Elementi figlio

Nessuno.

Esempio di configurazione

L'esempio seguente contiene due <add> elementi che definiscono i mapping dei gestori. Il primo <add> elemento definisce un gestore SampleHandler per un'applicazione Web in esecuzione in modalità integrata IIS 7. Se si aggiunge l'assembly del gestore alla directory app_code per l'applicazione Web, non è necessario includere il nome dell'assembly nel valore per l'attributo type . Il secondo <add> elemento definisce un mapping per le richieste PHP che usano il modulo 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>

Codice di esempio

Gli esempi seguenti aggiungono un mapping FastCGI per un modulo PHP, quindi aggiungere un gestore nel sito Web Contoso che elaborerà le richieste 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']"

Nota

Questo secondo esempio illustra come aggiungere un nuovo mapping del gestore ASP.NET denominato SampleHandler.new per un URL specifico a un'applicazione 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()