Gestori gestori <>
Panoramica
L'elemento <handlers>
definisce i gestori registrati per un'estensione o un URL di file specifici.
I gestori sono componenti iis (Internet Information Services) configurati per elaborare le richieste a contenuto specifico, in genere per generare una risposta per la risorsa di richiesta. Ad esempio, una pagina Web ASP.NET è un tipo di gestore. È possibile usare i gestori per elaborare le richieste a qualsiasi risorsa che deve restituire informazioni agli utenti che non sono un file statico. IIS offre diversi tipi di gestore per supportare file statici, applicazioni CGI (Common Gateway Interface), applicazioni FastCGI e estensioni ISAPI (Internet Server API). ASP.NET fornisce anche il supporto per altri tipi di gestore tramite l'interfaccia del gestore HTTP.
Gli sviluppatori possono creare gestori personalizzati per eseguire una gestione speciale che è possibile identificare usando le estensioni di file nell'applicazione. Ad esempio, se uno sviluppatore ha creato un gestore che ha creato codice XML in formato RSS, è possibile associare l'estensione del nome file RSS nell'applicazione al gestore personalizzato. Gli sviluppatori possono anche creare gestori che eseguono il mapping a un file specifico e possono implementare questi gestori come moduli nativi o come implementazioni dell'interfaccia ASP.NET IHttpHandler .
Compatibilità
Versione | Note |
---|---|
IIS 10.0 | L'elemento <handlers> non è stato modificato in IIS 10.0. |
IIS 8,5 | L'elemento <handlers> non è stato modificato in IIS 8.5. |
IIS 8,0 | L'elemento <handlers> non è stato modificato in IIS 8.0. |
IIS 7,5 | L'elemento <handlers> non è stato modificato in IIS 7.5. |
IIS 7.0 | L'elemento <handlers> è stato introdotto in IIS 7.0. |
IIS 6.0 | N/D |
Installazione
L'elemento <handlers>
è 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
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).
Nel riquadro Connessioni fare clic sulla connessione server a cui si vuole aggiungere il modulo nativo.
Nel riquadro Home fare doppio clic su Mapping gestore.
Nel riquadro Azioni fare clic su Aggiungi gestore gestito...
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.
Fare clic su OK per chiudere la finestra di dialogo Aggiungi gestore gestito .
Come creare un mapping del gestore FastCGI
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).
Nel riquadro Connessioni fare clic sul nome del server per cui si desidera configurare i mapping dei gestori FastCGI.
Nel riquadro Home fare doppio clic su Mapping gestore.
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.
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.
Nella finestra di dialogo Aggiungi mapping moduli fare clic su Sì.
Configurazione
L'elemento <handlers>
contiene una raccolta di <add>
elementi, ognuno dei quali definisce un mapping del gestore per l'applicazione. L'elemento <add>
contiene il nome del gestore, l'estensione del file o la maschera percorso URL a cui è mappato il gestore e il nome del modulo o ASP.NET tipo di gestore HTTP che specifica l'implementazione del gestore, tra le altre impostazioni.
L'elemento viene <handlers>
configurato a livello di applicazione nel file Web.config.
Attributi
Attributo | Descrizione | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
accessPolicy |
Attributo flag facoltativo. Specifica i tipi di accesso consentiti per l'intera raccolta di gestori. L'attributo accessPolicy può essere uno dei valori possibili seguenti. Il valore predefinito è Read .
|
Elementi figlio
Elemento | Descrizione |
---|---|
add |
Elemento facoltativo. Aggiunge un gestore alla raccolta di gestori. |
clear |
Elemento facoltativo. Rimuove tutti i riferimenti ai gestori dall'insieme dei gestori. |
remove |
Elemento facoltativo. Rimuove un riferimento a un gestore dalla raccolta dei gestori. |
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()