Elemento Modules Element <modules>

Panoramica

L'elemento <modules> definisce i moduli di codice nativo e i moduli di codice gestito registrati per un'applicazione. Come parte dell'elaborazione della pipeline di richiesta di Internet Information Services (IIS), IIS chiama ogni modulo elencato nell'elemento <modules> in ogni richiesta. In genere si usano moduli per implementare funzionalità personalizzate, ad esempio sicurezza, statistiche e registrazione o elaborazione di contenuti personalizzati, ad esempio l'aggiunta di intestazioni o piè di pagina personalizzati.

L'elemento <modules> contiene una raccolta di <add> elementi. Ogni elemento definisce un modulo abilitato per l'applicazione. Quando si abilita un modulo, si consente di fornire il relativo servizio per una determinata applicazione.

Se si vuole abilitare un modulo nativo, è prima necessario installarlo nel server. Per altre informazioni, vedere l'elemento <globalModules> .

Non è necessario installare un modulo gestito; è possibile abilitarla direttamente per ogni applicazione. Ciò consente alle applicazioni di includere i moduli gestiti direttamente all'interno dell'applicazione registrandoli nel file Web.config dell'applicazione e fornendo l'implementazione nelle directory /BIN o /App_Code.

Compatibilità

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

Installazione

L'elemento <modules> è incluso nell'installazione predefinita di IIS 7.

Procedure

Come aggiungere un modulo gestito all'applicazione

  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 espandere il nome del server, espandere Siti e quindi passare al sito Web o all'applicazione a cui si vuole aggiungere un modulo gestito.

  3. Nel riquadro Home fare doppio clic su Moduli.
    Screenshot della home page del sito Web predefinito. L'icona per Moduli è evidenziata.

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

  5. Nella finestra di dialogo Aggiungi modulo gestito immettere il nome del modulo gestito nella casella Nome e quindi immettere o selezionare il tipo completo di .NET Framework del modulo nella casella Tipo.

  6. Selezionare l'opzione Invoke only for requests to ASP.NET applications or managed handlers (Richiama solo per le richieste a ASP.NET applicazioni o gestori gestiti ) se si vuole che il modulo risponda solo alle richieste gestite.
    Screenshot della finestra di dialogo Aggiungi modulo gestito.

  7. Fare clic su OK.

Configurazione

L'elemento <modules> viene configurato a livello di server nel file ApplicationHost.config e a livello di applicazione nel file Web.config.

Attributi

Attributo Descrizione
runAllManagedModulesForAllRequests Valore booleano facoltativo.

True se tutti i moduli gestiti possono elaborare tutte le richieste, anche se la richiesta non era relativa al contenuto gestito; in caso contrario, false.

Nota: In ASP.NET siti Web, il valore di runAllManagedModulesForAllRequests in precedenza doveva essere impostato su true per supportare il routing. Tuttavia, dopo l'aggiornamento di IIS 7 con un Service Pack, il valore di runAllManagedModulesForAllRequests può essere impostato false su o omesso quando si lavora con ASP.NET routing. Per altre informazioni, vedere ASP.NET Routing nel sito Web MSDN.

Il valore predefinito è false.
runManagedModulesForWebDavRequests Valore booleano facoltativo.

True se i moduli gestiti possono elaborare le richieste WebDAV; in caso contrario, false.

Il valore predefinito è false.

Elementi figlio

Elemento Descrizione
add Elemento facoltativo.

Aggiunge un modulo alla raccolta di moduli.
clear Elemento facoltativo.

Rimuove tutti i riferimenti ai moduli dall'insieme modules.
remove Elemento facoltativo.

Rimuove un riferimento a un modulo dall'insieme modules.

Esempio di configurazione

Nell'esempio viene configurato un modulo per un'applicazione Web in esecuzione in modalità integrata IIS 7.

<configuration>
   <system.webServer>
      <modules>
         <add name="Header" type="Contoso.ShoppingCart.Header"/>
      </modules>
   </system.webServer>
</configuration>

Codice di esempio

Nota

Gli esempi in questo documento illustrano l'uso di un assembly con codice gestito archiviato nella Global Assembly Cache (GAC) di .NET. Prima di usare il codice in questi esempi per distribuire assembly personalizzati, è necessario recuperare le informazioni sull'assembly dalla GAC. A tale scopo, seguire questa procedura:

  • In Esplora risorse aprire il percorso C:\Windows\assembly, dove C: è l'unità del sistema operativo.
  • Individuare l'assembly.
  • Fare clic con il pulsante destro del mouse sull'assembly e scegliere Proprietà.
  • Copiare il valore Culture ; ad esempio : neutrale.
  • Copiare il numero di versione ; ad esempio : 1.0.0.0.
  • Copiare il valore del token di chiave pubblica ; ad esempio : 426f62526f636b73.
  • Fare clic su Annulla.

Gli esempi di codice seguenti abilitano un modulo gestito per un sito Web denominato Contoso. La proprietà name definisce il nome CartHeader per il modulo, la proprietà type definisce il tipo gestito per il modulo, la proprietà preCondition definisce che IIS richiama il modulo solo per le richieste gestite.

AppCmd.exe

appcmd.exe set config "Contoso" -section:system.webServer/modules /+"[name='CartHeader',type='Contoso.ShoppingCart.Header',preCondition='managedHandler']"

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetWebConfiguration("Contoso");
         ConfigurationSection modulesSection = config.GetSection("system.webServer/modules");
         ConfigurationElementCollection modulesCollection = modulesSection.GetCollection();

         ConfigurationElement addElement = modulesCollection.CreateElement("add");
         addElement["name"] = @"CartHeader";
         addElement["type"] = @"Contoso.ShoppingCart.Header";
         addElement["preCondition"] = @"managedHandler";
         modulesCollection.Add(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 config As Configuration = serverManager.GetWebConfiguration("Contoso")
      Dim modulesSection As ConfigurationSection = config.GetSection("system.webServer/modules")
      Dim modulesCollection As ConfigurationElementCollection = modulesSection.GetCollection

      Dim addElement As ConfigurationElement = modulesCollection.CreateElement("add")
      addElement("name") = "CartHeader"
      addElement("type") = "Contoso.ShoppingCart.Header"
      addElement("preCondition") = "managedHandler"
      modulesCollection.Add(addElement)

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Contoso";
var modulesSection = adminManager.GetAdminSection("system.webServer/modules", "MACHINE/WEBROOT/APPHOST/Contoso");
var modulesCollection = modulesSection.Collection;

var addElement = modulesCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "CartHeader";
addElement.Properties.Item("type").Value = "Contoso.ShoppingCart.Header";
addElement.Properties.Item("preCondition").Value = "managedHandler";
modulesCollection.AddElement(addElement);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Contoso"
Set modulesSection = adminManager.GetAdminSection("system.webServer/modules", "MACHINE/WEBROOT/APPHOST/Contoso")
Set modulesCollection = modulesSection.Collection

Set addElement = modulesCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "CartHeader"
addElement.Properties.Item("type").Value = "Contoso.ShoppingCart.Header"
addElement.Properties.Item("preCondition").Value = "managedHandler"
modulesCollection.AddElement addElement

adminManager.CommitChanges()