Freigeben über


Anwendungspools <applicationPools>

Übersicht

Das <applicationPools>-Element enthält Konfigurationseinstellungen für alle Anwendungspools, die auf Ihrem Internetinformationsdienstserver (Internet Information Services, IIS) 7 oder höher ausgeführt werden. Ein Anwendungspool definiert eine Gruppe von einem oder mehreren Arbeitsprozessen, die mit gemeinsamen Einstellungen konfiguriert sind und Anfragen an eine oder mehrere Anwendungen, die diesem Anwendungspool zugewiesen sind, bedienen. Da Anwendungspools es einer Reihe von Webanwendungen ermöglichen, einen oder mehrere ähnlich konfigurierte Arbeitsprozesse gemeinsam zu nutzen, bieten sie eine bequeme Möglichkeit, eine Reihe von Webanwendungen von anderen Webanwendungen auf dem Servercomputer zu isolieren. Die einzelnen Arbeitsprozesse sind durch Prozessgrenzen voneinander getrennt. Daher wirken sich Anwendungsprobleme in einem Anwendungspool nicht auf Websites oder Anwendungen in anderen Anwendungspools aus. Anwendungspools erhöhen sowohl die Zuverlässigkeit als auch die Verwaltbarkeit Ihrer Webinfrastruktur erheblich.

Sie können entweder den Standardanwendungspool verwenden, der bei der Installation von IIS bereitgestellt wird, oder einen eigenen Anwendungspool erstellen. Sie können beliebig viele Anwendungspools auf Ihrem IIS 7- und höher-Server ausführen, was sich jedoch auf die Serverleistung auswirken kann. Anwendungspools können einen oder mehrere Arbeitsprozesse enthalten. Jeder Arbeitsprozess stellt die Arbeit dar, die für eine Website, Webanwendung oder einen Webdienst ausgeführt wird. Sie können einen Webgarten erstellen, indem Sie mehrere Arbeitsprozesse in einem einzigen Anwendungspool laufen lassen.

In IIS 7 und höher verwendet jeder Anwendungspool einen von zwei .NET-Integrationsmodi zum Ausführen von ASP.NET-Anwendungen: Integriert oder Klassisch. Der für den Anwendungspool definierte .NET-Integrationsmodus bestimmt, wie IIS eine eingehende Anforderung an die Websites, Anwendungen und Webdienste verarbeitet, die in diesem Anwendungspool ausgeführt werden.

  • Der integrierte Modus ermöglicht IIS das Verarbeiten von Anforderungen im Anwendungspool mithilfe der integrierten IIS 7- und höher-Pipeline. Auf diese Weise können ASP.NET-Module unabhängig vom angeforderten Ressourcentyp an der IIS-Anforderungsverarbeitung teilnehmen. Der integrierte Modus stellt Features der ASP.NET 2.0-Anforderungspipeline für Anforderungen für statische Inhalte sowie ASP, PHP und andere Inhaltstypen zur Verfügung. Standardmäßig werden IIS 7- und höher-Anwendungspools in diesem Modus ausgeführt.
  • Der klassische Modus verwendet die IIS 6.0-Verarbeitungspipeline zum Hosten von ASP.NET- Anwendungen. In diesem Modus werden Anforderungen zunächst über IIS 7 und höher verarbeitet, und ASP.NET-Anforderungen werden von der aspnet_isapi.dll weiter verarbeitet. Die ASP.NET-Verarbeitungspipeline ist von der IIS 7- und höher-Verarbeitungspipeline getrennt, und die ASP.NET-Anforderungsverarbeitungs-Pipelinefeatures sind für andere Ressourcentypen nicht verfügbar. Dies bedeutet auch, dass eine ASP.NET-Anforderung in beiden Prozessmodellen Authentifizierungs- und Autorisierungsmodule durchlaufen muss. Dies ist zwar nicht so effizient wie der integrierte Modus, ermöglicht es Ihnen jedoch, Anwendungen auszuführen, die mit ASP.NET-Version 1.1 auf einem IIS 7- und höher-Server entwickelt wurden, ohne die Anwendung dahingehend zu ändern, dass sie im integrierten Modus ausgeführt wird.

Neu in IIS 7.5 und höher

Ab IIS 7.5 können Sie eine Anwendung so konfigurieren, dass sie automatisch gestartet wird, indem Sie die Attribute managedRuntimeLoader, CLRConfigFile und startMode des <add>-Elements verwenden. Diese Attribute konfigurieren den Namen der verwalteten DLL, die das Laden der Laufzeit für Ihre Anwendung, die Konfigurationsdatei für die Common Language Runtime für die Anwendung und den Starttyp für die Anwendung bereitstellt.

Auch neu in IIS 7.5 und höher ist ein neuer ApplicationPoolIdentity Typ für das Attribut identityType des <processModel>-Elements. Dieser neue Identitätstyp ist jetzt die Standardprozessidentität für Anwendungen und ermöglicht es, die Sicherheit für Ihre Inhaltsbereiche festzulegen, um den Zugriff für einen bestimmten Anwendungspool zu ermöglichen. Dazu legen Sie Ihre Sicherheit mithilfe des Namens eines Anwendungspools mithilfe von Syntax wie „IIS AppPool\DefaultAppPool“ fest. Diese Identität wird dynamisch erstellt, wodurch der Angriffsbereich des Servers erheblich reduziert wird.

Kompatibilität

Version Hinweise
IIS 10.0 Das <applicationPools> Element wurde in IIS 10.0 nicht geändert.
IIS 8.5 Das <applicationPools> Element wurde in IIS 8.5 nicht geändert.
IIS 8.0 Das <applicationPools> Element wurde in IIS 8.0 nicht geändert.
IIS 7.5 Das <add>-Element des <applicationPools>-Elements wurde in IIS 7.5 aktualisiert, um Attribute einzuschließen, mit denen Sie Anwendungen mithilfe der managedRuntimeLoader-, CLRConfigFile- und startMode-Attribute vorab laden und Anwendungen mit der neuen ApplicationPoolIdentity ausführen können.
IIS 7.0 Das <applicationPools>-Element wurde in IIS 7.0 eingeführt.
IIS 6.0 Das <applicationPools>-Element ersetzt das IIS 6.0 IIsApplicationPoolsMetabasisobjekt.

Setup

Die Auflistung <applicationPools> ist in der Standardinstallation von IIS 7 und höher enthalten.

Gewusst wie

Erstellen eines neuen Anwendungspools

  1. Öffnen Sie den Internet Information Services (IIS) Manager:

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

      • Klicken Sie der der Taskleiste auf Server-Managerdann auf Toolsund dann auf den Internet Information Services (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 Verwaltungund doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows Server 2008 oder Windows Server 2008 R2 verwenden:

      • Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltungund dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows Vista oder Windows 7 verwenden:

      • Klicken Sie auf der Taskleiste auf "Start" und dann auf "Systemsteuerung".
      • Doppelklicken Sie auf Verwaltungund doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
  2. Erweitern Sie im Bereich Verbindungen den Servernamen, und klicken Sie anschließend auf Anwendungspools.

  3. Klicken Sie im Bereich Aktionen auf Anwendungspool hinzufügen....

  4. Geben Sie im Dialogfeld Anwendungspool hinzufügen den Namen des Anwendungspools in das Feld Name: ein, wählen Sie in der Dropdownliste .NET Framework-Version: die .NET Framework-Version aus, die Ihre Website oder Anwendung verwendet, wählen Sie in der Dropdownliste Verwendete-Pipeline-Modus: Integriert oder Klassisch aus, und klicken Sie dann auf OK.
    Screenshot of the Add Application Pool dialog box, showing the Name, dot NET Framework version, and Managed pipeline mode fields.

Konfigurieren des Anwendungspools für eine vorhandene Site oder eine vorhandene Anwendung

  1. Erweitern Sie im Bereich VerbindungenSites, und navigieren Sie dann zur Site oder Anwendung, die Sie dem Anwendungspool hinzufügen möchten.
  2. Klicken Sie im Bereich Aktionen auf Erweiterte Einstellungen...
  3. Klicken Sie im Abschnitt Allgemein des Dialogfelds Erweiterte Einstellungen auf den Eintrag Anwendungspool, und klicken Sie dann auf die Schaltfläche mit den Auslassungspunkten.
    Screenshot of the Advanced Settings dialog box with the Application Pool entry being highlighted.
  4. Wählen Sie im Dialogfeld Anwendungspool auswählen den Anwendungspool aus dem Dropdownfeld Anwendungspool:, klicken Sie auf OK, und klicken Sie dann erneut auf OK.
    Screenshot of the Select Application Pool dialog box's Application pool field, which contains a drop-down menu of available options.

Konfiguration

Das <applicationPools>-Element enthält eine Sammlung von <add>-Elementen. Jedes Element in der Auflistung konfiguriert einen Anwendungspool, der unter IIS 7 und höher ausgeführt wird. Jedes <add>-Element enthält mindestens ein Namens-Attribut, das den Anwendungspool an GUI- und Befehlszeilenverwaltungstools identifiziert. Das <add>-Element enthält untergeordnete Elemente, die die Prozessmodell-, CPU- und Recyclingeinstellungen für den Anwendungspool konfigurieren.

Das <applicationPools>-Element enthält auch das <applicationPoolDefaults>-Element, das Standardeinstellungen für alle Anwendungspools auf dem IIS 7- und höher-Server definiert. Um die Standardeinstellungen des Anwendungspools auf dem Server zu ändern, können Sie das <applicationPoolDefaults>-Element bearbeiten. Wenn Sie einen neuen Anwendungspool erstellen, überschreiben die Konfigurationseinstellungen für diesen Anwendungspool die im <applicationPoolDefaults>-Element festgelegten Standardwerte.

Attribute

Keine

Untergeordnete Elemente

Element Beschreibung
add Fügt dem Abschnitt applicationPools einen Anwendungspool hinzu.
applicationPoolDefaults Erforderliches Zeichenfolgenattribut.

Konfiguriert die Standardeinstellungen für alle Anwendungspools in einem applicationPools-Abschnitt.

Konfigurationsbeispiel

Das folgende Konfigurationsbeispiel verwendet die Elemente Anwendungspool <add> und <applicationPools>, um die Standardanwendungspools und Standardeinstellungen für IIS zu definieren.

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

Beispielcode

In den folgenden Beispielen wird ein Anwendungspool namens Contoso hinzugefügt und der verwaltete Pipelinemodus auf Integriert festgelegt.

AppCmd.exe

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

Hinweis

Sie müssen unbedingt den Commitparameterapphost festlegen, wenn Sie AppCmd.exe verwenden, um diese Einstellungen zu konfigurieren. Dadurch werden die Konfigurationseinstellungen auf den entsprechenden Speicherortabschnitt in der Datei ApplicationHost.config festgelegt.

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