Module Element <modules element>

Übersicht

Das <modules>-Element definiert die Module mit systemeigenem Code und verwaltetem Code, die für eine Anwendung registriert sind. Als Teil der Internetinformationsdienste (IIS), der Anforderungspipelineverarbeitung, ruft IIS jedes Modul auf, das im <modules>-Element für jede Anforderung aufgeführt ist. Häufig verwenden Sie Module, um benutzerdefinierte Funktionen wie Sicherheit, Statistik und Protokollierung oder benutzerdefinierte Inhaltsverarbeitung zu implementieren, z. B. das Hinzufügen von benutzerdefinierten Kopf- oder Fußzeilen.

Das <modules>-Element enthält eine Sammlung von <add>-Elementen. Jedes Element definiert ein aktiviertes Modul für die Anwendung. Wenn Sie ein Modul aktivieren, können Sie dessen Dienst für eine bestimmte Anwendung bereitstellen.

Wenn Sie ein systemeigenes Modul aktivieren möchten, müssen Sie es zuerst auf dem Server installieren. Weitere Informationen finden Sie im <globalModules>-Element.

Sie müssen kein verwaltetes Modul installieren; Sie können sie für jede Anwendung direkt aktivieren. Dadurch können Anwendungen ihre verwalteten Module direkt in die Anwendung aufnehmen, indem Sie sie in der Datei "Web.config" der Anwendung registrieren und die Implementierung in den Verzeichnissen "/BIN" oder "/App_Code" bereitstellen.

Kompatibilität

Version Hinweise
IIS 10.0 Das <modules> Element wurde in IIS 10.0 nicht geändert.
IIS 8.5 Das <modules> Element wurde in IIS 8.5 nicht geändert.
IIS 8.0 Das <modules> Element wurde in IIS 8.0 nicht geändert.
IIS 7.5 Das <modules> Element wurde in IIS 7.5 nicht geändert.
IIS 7.0 Das <modules> Element wurde in IIS 7.0 eingeführt.
IIS 6.0 N/V

Setup

Das <modules>-Element ist in der Standardinstallation von IIS 7 enthalten.

Gewusst wie

Hinzufügen eines verwalteten Moduls zur Anwendung

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

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

      • Klicken Sie in 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, erweitern Sie Websites, und wechseln Sie dann zur Website oder Anwendung, der Sie ein verwaltetes Modul hinzufügen möchten.

  3. Doppelklicken Sie im Startbereich auf Module.
    Screenshot of the Default Web Site Home page. The icon for Modules is highlighted.

  4. Klicken Sie im Bereich „Aktionen“ auf Verwaltetes Modul hinzufügen.

  5. Geben Sie im Dialogfeld Verwaltetes Modul hinzufügen den Namen des verwalteten Moduls im Feld Name ein, und geben Sie dann im Feld "Typ" den vollqualifizierten .NET Framework-Typ des Moduls ein.

  6. Wählen Sie die Option Nur aufrufen für Anforderungen an ASP.NET Anwendungen oder verwaltete Handler aus, wenn das Modul nur auf verwaltete Anforderungen reagieren soll.
    Screenshot of the Add Managed Module dialog box.

  7. Klicken Sie auf OK.

Konfiguration

Sie konfigurieren das <modules>-Element auf Serverebene in der Datei ApplicationHost.config und auf der Anwendungsebene in der Datei Web.config.

Attribute

Attribut Beschreibung
runAllManagedModulesForAllRequests Optionaler boolescher Wert.

True, wenn alle verwalteten Module alle Anforderungen verarbeiten können, auch wenn die Anforderung nicht für verwaltete Inhalte war; andernfalls false.

Hinweis: In ASP.NET Websites musste der Wert von runAllManagedModulesForAllRequests zuvor auf true festgelegt werden, um das Routing zu unterstützen. Nachdem IIS 7 jedoch mit einem Service Pack aktualisiert wurde, kann der Wert runAllManagedModulesForAllRequests beim Arbeiten mit ASP.NET Routing auf false festgelegt oder weggelassen werden. Weitere Informationen finden Sie unter ASP.NET Routing auf der MSDN-Website.

Der Standardwert ist false.
runManagedModulesForWebDavRequests Optionaler boolescher Wert.

True, wenn verwaltete Module WebDAV-Anforderungen verarbeiten können; andernfalls false.

Der Standardwert ist false.

Untergeordnete Elemente

Element Beschreibung
add Optionales Element.

Fügt der Auflistung von Modulen für IIS-Manager ein Modul hinzu.
clear Optionales Element.

Entfernt alle Verweise auf Module aus der Modulauflistung.
remove Optionales Element.

Entfernt einen Verweis auf ein Modul aus der Modulauflistung.

Konfigurationsbeispiel

Im Beispiel wird ein Modul für eine Webanwendung konfiguriert, die im integrierten IIS 7-Modus ausgeführt wird.

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

Beispielcode

Hinweis

Die Beispiele in diesem Dokument veranschaulichen die Verwendung einer Assembly mit verwaltetem Code, die im globalen .NET-Assemblycache (GAC) gespeichert wurde. Bevor Sie den Code in diesen Beispielen zum Bereitstellen eigener Assemblys verwenden, müssen Sie die Assemblyinformationen aus dem GAC abrufen. Führen Sie dazu die folgenden Schritte aus:

  • Öffnen Sie im Windows-Explorer den Pfad C:\Windows\assembly, wobei C: Ihr Betriebssystemlaufwerk ist.
  • Suchen Sie Ihre Assembly.
  • Klicken Sie mit der rechten Maustaste auf die Assembly, und klicken Sie auf Eigenschaften.
  • Kopieren Sie den Wert Kultur; Beispiel: Neutral.
  • Kopieren Sie die Version-Nummer, z. B. 1.0.0.0.
  • Kopieren Sie den Wert Public Key Token, z. B. 426f62526f636b73.
  • Klicken Sie auf Abbrechen.

Die folgenden Codebeispiele ermöglichen ein verwaltetes Modul für eine Website mit dem Namen Contoso. Die Name-Eigenschaft definiert den Namen CartHeader für das Modul, die Typ-Eigenschaft definiert den verwalteten Typ für das Modul, die preCondition-Eigenschaft definiert, dass IIS das Modul nur für verwaltete Anforderungen aufruft.

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