Condividi tramite


<Pool di applicazioniPools>

Panoramica

L'elemento <applicationPools> contiene le impostazioni di configurazione per tutti i pool di applicazioni in esecuzione nel server Internet Information Services (IIS) 7 o versione successiva. Un pool di applicazioni definisce un gruppo di uno o più processi di lavoro, configurati con impostazioni comuni che gestiscono le richieste a una o più applicazioni assegnate al pool di applicazioni. Poiché i pool di applicazioni consentono a un set di applicazioni Web di condividere uno o più processi di lavoro configurati in modo simile, offrono un modo pratico per isolare un set di applicazioni Web da altre applicazioni Web nel computer server. I limiti del processo separano ogni processo di lavoro; pertanto, i problemi delle applicazioni in un pool di applicazioni non influiscono sui siti Web o sulle applicazioni in altri pool di applicazioni. I pool di applicazioni aumentano significativamente sia l'affidabilità che la gestibilità dell'infrastruttura Web.

È possibile scegliere di usare il pool di applicazioni predefinito fornito da IIS durante l'installazione oppure è possibile creare un pool di applicazioni personalizzato. È possibile eseguire tutti i pool di applicazioni nel server IIS 7 e versioni successive necessarie, anche se ciò può influire sulle prestazioni del server. I pool di applicazioni possono contenere uno o più processi di lavoro. Ogni processo di lavoro rappresenta il lavoro svolto per un sito Web, un'applicazione Web o un servizio Web. È possibile creare un web garden consentendo l'esecuzione di più processi di lavoro in un singolo pool di applicazioni.

In IIS 7 e versioni successive ogni pool di applicazioni usa una delle due modalità di integrazione .NET per l'esecuzione di applicazioni ASP.NET: integrata o classica. La modalità di integrazione .NET definita per il pool di applicazioni determina il modo in cui IIS elabora una richiesta in ingresso ai siti, alle applicazioni e ai servizi Web eseguiti in tale pool di applicazioni.

  • La modalità integrata consente a IIS di elaborare le richieste nel pool di applicazioni usando iis 7 e la pipeline integrata successiva. In questo modo ASP.NET moduli possono partecipare all'elaborazione delle richieste IIS indipendentemente dal tipo di risorsa richiesta. L'uso della modalità integrata rende disponibili le funzionalità della pipeline di richieste ASP.NET 2.0 disponibili per le richieste di contenuto statico, nonché ASP, PHP e altri tipi di contenuto. Per impostazione predefinita, i pool di applicazioni IIS 7 e versioni successive vengono eseguiti in questa modalità.
  • La modalità classica usa la pipeline di elaborazione iis 6.0 per l'hosting di applicazioni ASP.NET. In questa modalità, le richieste vengono elaborate inizialmente tramite i moduli IIS 7 e versioni successive e ASP.NET richieste vengono elaborate ulteriormente dal aspnet_isapi.dll. La pipeline di elaborazione ASP.NET è separata dalla pipeline di elaborazione IIS 7 e successive e le funzionalità della pipeline di elaborazione delle richieste ASP.NET non sono disponibili per altri tipi di risorse. Ciò significa anche che una richiesta di ASP.NET deve passare attraverso moduli di autenticazione e autorizzazione in entrambi i modelli di processo. Anche se questa modalità integrata non è altrettanto efficiente, consente di eseguire applicazioni sviluppate usando ASP.NET versione 1.1 in un server IIS 7 e versioni successive senza modificare l'applicazione per l'esecuzione in modalità integrata.

Novità in IIS 7.5 e versioni successive

A partire da IIS 7.5, è possibile configurare un'applicazione per l'avvio automatico usando gli attributi managedRuntimeLoader, CLRConfigFile e startMode dell'elemento <add> . Questi attributi configurano, rispettivamente, il nome della DLL gestita che fornisce il caricamento di runtime per l'applicazione, il file di configurazione Common Language Runtime per l'applicazione e il tipo di avvio per l'applicazione.

Novità anche in IIS 7.5 e versioni successive è un nuovo ApplicationPoolIdentity tipo per l'attributo identityType dell'elemento <processModel> . Questo nuovo tipo di identità è ora l'identità del processo predefinita per le applicazioni e consente di impostare la sicurezza per le aree di contenuto per consentire l'accesso per un pool di applicazioni specifico. A tale scopo, è necessario impostare la sicurezza usando il nome di un pool di applicazioni usando la sintassi "IIS AppPool\DefaultAppPool". Questa identità viene creata in modo dinamico, riducendo in modo significativo l'area di attacco della superficie del server.

Compatibilità

Versione Note
IIS 10.0 L'elemento <applicationPools> non è stato modificato in IIS 10.0.
IIS 8,5 L'elemento <applicationPools> non è stato modificato in IIS 8.5.
IIS 8,0 L'elemento <applicationPools> non è stato modificato in IIS 8.0.
IIS 7,5 L'elemento <add> dell'elemento <applicationPools> è stato aggiornato in IIS 7.5 per includere attributi che consentono di precaricare le applicazioni usando gli attributi managedRuntimeLoader, CLRConfigFile e startMode e per eseguire applicazioni usando il nuovo ApplicationPoolIdentity.
IIS 7.0 L'elemento <applicationPools> è stato introdotto in IIS 7.0.
IIS 6.0 L'elemento <applicationPools> sostituisce l'oggetto metabase IIS 6.0 IIsApplicationPools .

Installazione

La <applicationPools> raccolta è inclusa nell'installazione predefinita di IIS 7 e versioni successive.

Procedure

Come creare un nuovo pool di applicazioni

  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 e quindi fare clic su Pool di applicazioni.

  3. Nel riquadro Azioni fare clic su Aggiungi pool di applicazioni....

  4. Nella finestra di dialogo Aggiungi pool di applicazioni immettere il nome del pool di applicazioni nella casella Nome: nell'elenco a discesa Versione di .NET Framework selezionare la versione di .NET Framework usata dal sito o dall'applicazione, nell'elenco a discesa Modalità pipeline gestita selezionareIntegrato o Classico e quindi fare clic su OK.
    Screenshot della finestra di dialogo Aggiungi pool di applicazioni, che mostra i campi Nome, versione di NET Framework e Modalità pipeline gestita.

Come configurare il pool di applicazioni per un sito o un'applicazione esistente

  1. Nel riquadro Connessioni espandere Siti e quindi passare al sito Web o all'applicazione da aggiungere al pool di applicazioni.
  2. Nel riquadro Azioni fare clic su Impostazioni avanzate...
  3. Nella sezione Generale della finestra di dialogo Impostazioni avanzate fare clic sulla voce Pool di applicazioni e quindi sul pulsante con i puntini di sospensione.
    Screenshot della finestra di dialogo Impostazioni avanzate con la voce Pool di applicazioni evidenziata.
  4. Nella finestra di dialogo Seleziona pool di applicazioni selezionare il pool di applicazioni dalla casella di riepilogo a discesa Pool di applicazioni, fare clic su OK e quindi fare di nuovo clic su OK .
    Screenshot del campo Pool di applicazioni della finestra di dialogo Seleziona pool di applicazioni, che contiene un menu a discesa delle opzioni disponibili.

Configurazione

L'elemento <applicationPools> contiene una raccolta di <add> elementi. Ogni elemento della raccolta configura un pool di applicazioni in esecuzione in IIS 7 e versioni successive. Come minimo, ogni <add> elemento contiene un attributo name che identifica il pool di applicazioni per gui e strumenti di gestione da riga di comando. L'elemento <add> contiene elementi figlio che configurano le impostazioni del modello di processo, della CPU e del riciclo per il pool di applicazioni.

L'elemento <applicationPools> contiene anche l'elemento <applicationPoolDefaults> , che definisce le impostazioni predefinite per tutti i pool di applicazioni nel server IIS 7 e versioni successive. Per modificare le impostazioni predefinite del pool di applicazioni nel server, è possibile modificare l'elemento <applicationPoolDefaults> . Quando si crea un nuovo pool di applicazioni, le impostazioni di configurazione per il pool di applicazioni sostituiscono le impostazioni predefinite impostate nell'elemento <applicationPoolDefaults> .

Attributi

Nessuno.

Elementi figlio

Elemento Descrizione
add Aggiunge un pool di applicazioni alla sezione applicationPools.
applicationPoolDefaults Attributo stringa obbligatorio.

Configura le impostazioni predefinite per tutti i pool di applicazioni in una sezione applicationPools.

Esempio di configurazione

Nell'esempio di configurazione seguente vengono usati il pool <add> di applicazioni e <applicationPools> gli elementi per definire i pool di applicazioni standard e le impostazioni predefinite per IIS.

<applicationPools>
   <add name="DefaultAppPool" />
   <add name="Classic .NET AppPool" managedPipelineMode="Classic" />
   <applicationPoolDefaults>
      <processModel identityType="NetworkService" />
   </applicationPoolDefaults>
</applicationPools>

Codice di esempio

Gli esempi seguenti aggiungono un pool di applicazioni denominato Contoso e impostano la modalità pipeline gestita su Integrato.

AppCmd.exe

appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso',autoStart='True',managedPipelineMode='Integrated']" /commit:apphost

Nota

È necessario assicurarsi di impostare il parametro commit su apphost quando si usa AppCmd.exe per configurare queste impostazioni. In questo modo le impostazioni di configurazione vengono confermate nella sezione relativa al percorso appropriato nel file ApplicationHost.config.

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.GetApplicationHostConfiguration();

      ConfigurationSection applicationPoolsSection = config.GetSection("system.applicationHost/applicationPools");

      ConfigurationElementCollection applicationPoolsCollection = applicationPoolsSection.GetCollection();

      ConfigurationElement addElement = applicationPoolsCollection.CreateElement("add");
      addElement["name"] = @"Contoso";
      addElement["autoStart"] = true;
      addElement["managedPipelineMode"] = @"Integrated";
      applicationPoolsCollection.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.GetApplicationHostConfiguration
      Dim applicationPoolsSection As ConfigurationSection = config.GetSection("system.applicationHost/applicationPools")
      Dim applicationPoolsCollection As ConfigurationElementCollection = applicationPoolsSection.GetCollection
      Dim addElement As ConfigurationElement = applicationPoolsCollection.CreateElement("add")
      addElement("name") = "Contoso"
      addElement("autoStart") = True
      addElement("managedPipelineMode") = "Integrated"
      applicationPoolsCollection.Add(addElement)
      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var applicationPoolsSection = adminManager.GetAdminSection("system.applicationHost/applicationPools",
   "MACHINE/WEBROOT/APPHOST");

var applicationPoolsCollection = applicationPoolsSection.Collection;

var addElement = applicationPoolsCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "Contoso";
addElement.Properties.Item("autoStart").Value = true;
addElement.Properties.Item("managedPipelineMode").Value = "Integrated";
applicationPoolsCollection.AddElement(addElement);

adminManager.CommitChanges();

VBScript

Set adminManager = CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set applicationPoolsSection = adminManager.GetAdminSection("system.applicationHost/applicationPools","MACHINE/WEBROOT/APPHOST")
Set applicationPoolsCollection = applicationPoolsSection.Collection

Set addElement = applicationPoolsCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "Contoso"
addElement.Properties.Item("autoStart").Value = True
addElement.Properties.Item("managedPipelineMode").Value = "Integrated"
applicationPoolsCollection.AddElement(addElement)

adminManager.CommitChanges()