Übersicht über die parallele Ausführung in ASP.NET

Aktualisiert: November 2007

.NET Framework ermöglicht die Installation mehrerer Versionen der Common Language Runtime auf demselben Computer. Wenn .NET Framework auf einem Computer installiert wird, auf dem die Laufzeit bereits installiert ist, werden standardmäßig alle ASP.NET-Anwendungen automatisch für die Verwendung dieser Version von .NET Framework aktualisiert. Obwohl neuere Versionen von .NET Framework in der Regel abwärtskompatibel sind, kann es zuweilen erforderlich sein, eine ASP.NET-Anwendung für die Verwendung einer bestimmten Laufzeitversion zu konfigurieren.

Dieses Thema enthält folgende Abschnitte:

  • Szenarien

  • <Technologie hier eingeben>-Features

  • Background

  • Codebeispiele

  • Klassenreferenz

  • Zusätzliche Ressourcen

  • Neues

Szenarien

Zurück nach oben

Features

Zurück nach oben

Background

Normalerweise wird beim Aktualisieren einer Komponente oder einer Anwendung auf einem Computer die ältere Version entfernt und durch die neuere Version ersetzt. Wenn die neue Version mit der vorherigen Version nicht kompatibel ist, führt dies i. d. R. zu Problemen mit anderen Anwendungen, die diese Komponente oder Anwendung verwenden. .NET Framework unterstützt eine parallele Ausführung. Dadurch können mehrere Versionen einer Assembly oder Anwendung auf demselben Computer gleichzeitig installiert werden. Da es möglich ist, dass mehrere Versionen gleichzeitig installiert sind, können verwaltete Anwendungen die zu verwendende Version auswählen, ohne andere Anwendungen zu beeinträchtigen, die eine andere Version verwenden.

In ASP.NET spricht man von parallel ausgeführten Anwendungen, wenn diese auf demselben Computer installiert sind, sie aber verschiedene Versionen von .NET Framework verwenden. In den folgenden Themen wird beschrieben, wie die parallele Ausführung in ASP.NET unterstützt wird und wie ASP.NET-Anwendungen für die parallele Ausführung konfiguriert werden.

.NET Framework ermöglicht die Installation mehrerer Versionen der Common Language Runtime auf demselben Computer. Wenn .NET Framework auf einem Computer installiert wird, auf dem die Laufzeit bereits installiert ist, werden standardmäßig alle ASP.NET-Anwendungen automatisch für die Verwendung dieser Version von .NET Framework aktualisiert. Die einzigen Ausnahmen stellen Anwendungen dar, die an eine inkompatible Version der Laufzeit oder an eine neuere Laufzeitversion gebunden sind. (Die Kompatibilität wird in der Regel anhand der .NET Framework-Versionsnummer bestimmt. Unterschiede bei verschiedenen Hauptversionen sind normalerweise nicht kompatibel, kleinere Aktualisierungen und Unterschiede bei verschiedenen Buildnummerversionen hingegen schon. Obwohl neuere Versionen von .NET Framework in der Regel abwärtskompatibel sind, kann es zuweilen erforderlich sein, eine ASP.NET-Anwendung für die Verwendung einer bestimmten Laufzeitversion zu konfigurieren.

Skriptzuordnungen für ASP.NET-Anwendungen

Wenn mehrere Versionen von .NET Framework auf demselben Computer installiert sind, enthält jede Installation eine entsprechende Version der ASP.NET-ISAPI-Erweiterung (Aspnet_isapi.dll). Von der ASP.NET-ISAPI-Erweiterung wird festgestellt, welche Version von .NET Framework eine Anwendung verwendet. Sie können eine ASP.NET-Anwendung für die Verwendung jeder beliebigen ASP.NET-ISAPI-Erweiterung konfigurieren. Um die für eine Anwendung zu verwendende ASP.NET-ISAPI-Erweiterung anzugeben, wird in Internetinformationsdienste (IIS) eine Skriptzuordnung (gelegentlich auch als Anwendungszuordnung bezeichnet) für die Anwendung registriert.

Eine Skriptzuordnung ordnet eine Dateinamenerweiterung (wie ASPX) und ein HTTP-Verb (Wie GET und POST) einer entsprechenden ISAPI-Erweiterung zu. Wenn IIS beispielsweise eine Anforderung für eine ASPX-Datei erhält, weist die Skriptzuordnung für die Anwendung IIS an, die ASPX-Datei an die entsprechende Version der ASP.NET-ISAPI-Erweiterung weiterzuleiten. Die Skriptzuordnung für jede ASP.NET-Anwendung wird i. d. R. in der Managementkonsole der Internetinformationsdienste festgelegt und kann direkt auf eine Anwendung angewendet oder von einer übergeordneten Anwendung geerbt werden. Wenn .NET Framework installiert wird, werden standardmäßig die Skriptzuordnungen für alle vorhandenen ASP.NET-Anwendungen automatisch aktualisiert, damit sie die neue ASP.NET-ISAPI-Erweiterung verwenden, es sei denn, die Anwendung verwendet eine neuere oder inkompatible Version.

Zur einfacheren Neukonfiguration der Skriptzuordnung für eine ASP.NET-Anwendung verfügt jede .NET Framework-Installation über eine eigene Version des ASP.NET-IIS-Registrierungstools (Aspnet_regiis.exe). In der Standardeinstellung wird dieses Tool in folgendem Verzeichnis installiert:

%system root%\Microsoft.NET\Framework\Versionsnummer

Mit diesem Tool können Sie eine ASP.NET-Anwendung der entsprechenden Version der ASP.NET-ISAPI-Erweiterung zuordnen.

Hinweis:

Da Aspnet_regiis.exe einer bestimmten Version von .NET Framework zugeordnet ist, müssen Sie die entsprechende Version von Aspnet_regiis.exe verwenden, um die Skriptzuordnung für eine ASP.NET-Anwendung neu zu konfigurieren. Mithilfe des Tools Aspnet_regiis.exe wird die Skriptzuordnung einer ASP.NET-Anwendung genau auf diejenige Version der ASP.NET-ISAPI-Erweiterung festgelegt, die dem Tool entspricht.

Das Tool kann auch zum Anzeigen des Status aller installierten ASP.NET-Versionen, zum Registrieren der zugehörigen Version von ASP.NET, zum Erstellen von Clientskriptverzeichnissen und zum Ausführen von anderen Konfigurationsvorgängen verwendet werden.

Weitere Informationen zu Skriptzuordnungen und der IIS-Konfiguration finden Sie unter Setting Application Mappings in IIS 6.0 (IIS 6.0). Weitere Informationen zur Aktualisierung von Skriptzuordnungen für eine ASP.NET-Anwendung finden Sie unter ASP.NET IIS-Registrierungstool (Aspnet_regiis.exe).

ASP.NET-Leistungsindikatoren

Leistungsindikatoren ermöglichen die Überwachung des Betriebs von ASP.NET mithilfe der Windows-Verwaltungskonsole Leistung. Jede Version von .NET Framework installiert einen separaten Satz von Leistungsindikatorobjekten, die der Überwachung von ASP.NET-Anwendungen und von ASP.NET insgesamt dienen. Diese Objekte sind jeweils nach den Namenskonventionen "ASP.NET Apps v.X.X.XXXX.X" und "ASP.NET v.X.X.XXXX.X" benannt, wobei v.X.X.XXXX.X die ASP.NET-Version bezeichnet.

Zusätzlich installiert .NET Framework auch ASP.NET-System- und ASP.NET-Anwendungsleistungsindikatoren, die für alle installierten Versionen von ASP.NET gültig sind. Obwohl diese Indikatoren für alle Versionen von ASP.NET gültig sind, entsprechen sie stets der neuesten installierten Version. Wenn die neueste Version von ASP.NET deinstalliert wird, werden diese Zähler automatisch neu der aktuellsten verbleibenden Version von ASP.NET zugeordnet.

ASP.NET-Statusdienst

Mit dem ASP.NET-Statusdienst kann der Sitzungszustand auf einem Computer verwaltet werden. Sämtliche auf einem Computer installierten Versionen von ASP.NET verwenden gemeinsam den Statusdienst, der mit der neuesten Version von ASP.NET installiert wurde. Diese Version wird als Dienst mit dem Namen aspnet_state registriert. Daher wird bei der Deinstallation dieser ASP.NET-Version die neueste verbleibende Version des Diensts auf dem Computer registriert und an deren Stelle verwendet. Weitere Informationen zum ASP.NET-Statusdienst finden Sie unter Sitzungszustandsmodi.

ASP.NET SQL-Statusserver

Mit dem ASP.NET SQL-Statusserver wird der Sitzungszustand auf einem Computer in SQL verwaltet. Sämtliche auf einem Computer installierten Versionen von ASP.NET verwenden gemeinsam den SQL-Statusserver, der mit der neuesten Version von ASP.NET installiert wurde. Bei der Deinstallation dieser ASP.NET-Version wird die neueste verbleibende Version auf dem Computer registriert und an deren Stelle verwendet. Weitere Informationen zum ASP.NET SQL-Statusserver finden Sie unter Sitzungszustandsmodi.

Verwalten mehrerer Versionen von ASP.NET

.NET Framework ermöglicht die Installation mehrerer Versionen der Common Language Runtime (CLR) auf demselben Computer. Dadurch kann eine ASP.NET-Anwendung die benötigte Version verwenden, ohne dadurch andere Anwendungen zu beeinträchtigen. In den folgenden Abschnitten wird beschrieben, wie mehrere Versionen von ASP.NET auf demselben Computer installiert, deinstalliert und verteilt werden.

Installieren von mehreren ASP.NET-Versionen

Wenn Sie auf einem Computer eine Version von ASP.NET hinzufügen möchten, müssen Sie das Installationsprogramm für verteilbare .NET Framework-Pakete (Dotnetfx.exe) für die zu installierende Version ausführen. In der Standardeinstellung werden alle vorhandenen ASP.NET-Anwendungen bei der Installation automatisch neu konfiguriert, sodass sie die neu installierte Version der Laufzeit verwenden. Dafür müssen folgende Bedingungen erfüllt sein:

  • Die neu installierte Version von .NET Framework ist aktueller als die Version, die der Anwendung momentan zugeordnet ist.

  • Die neu installierte Version von .NET Framework ist kompatibel mit der Version, die der Anwendung momentan zugeordnet ist. Im Allgemeinen wird die Kompatibilität anhand der Versionsnummer bestimmt. Unterschiedliche Nebenversions- und Buildnummern sind normalerweise kompatibel, unterschiedliche Hauptversionsnummern hingegen nicht.

    Hinweis:

    Obwohl die ASP.NET-Anwendungen bei Vorliegen der aufgeführten Bedingungen automatisch so aktualisiert werden, dass sie die zu installierende Version von ASP.NET verwenden, werden die benutzerdefinierten Konfigurationseinstellungen in der aktuellen Datei Machine.config nicht in die neu installierte Datei Machine.config übertragen. Wenn die Anwendung benutzerdefinierte Konfigurationseinstellungen verwendet, müssen Sie die neue Datei Machine.config manuell aktualisieren oder das ASP.NET IIS-Registrierungstool (Aspnet_regiis.exe) verwenden, um die Anwendung der vorherigen Version von ASP.NET neu zuzuordnen.

Verwenden Sie das Installationsprogramm Dotnetfx.exe mit der Befehlszeilenoption /noaspupgrade, um die automatische Neuzuordnung aller vorhandenen Anwendungen zu der neu installierten Version von .NET Framework zu verhindern. Die Syntax können Sie dem folgenden Befehl entnehmen:

Dotnetfx.exe /c:"install /noaspupgrade"

Weitere Informationen über das verteilbare .NET Framework-Paket finden Sie unter Verteilung von .NET Framework.

Hinweis:

Wenn .NET Framework über die Option Software in der Windows-Systemsteuerung oder den Konfigurieren des Servers-Assistenten von Windows installiert wird, ist ASP.NET standardmäßig in der Sicherheitssperrkonsole aktiviert. Wenn .NET Framework jedoch über Microsoft Visual Studio, Windows Update oder das verteilbare .NET Framework-Paket (Dotnetfx.exe) installiert wird, ist ASP.NET standardmäßig deaktiviert.

Deinstallieren einer Version von ASP.NET

Wenn mehrere Versionen von ASP.NET auf einem Computer installiert sind, können Sie bestimmte Versionen deinstallieren. ASP.NET kann i. d. R. deinstalliert werden, indem .NET Framework in der Windows-Systemsteuerung über die Option Software deinstalliert wird. Während des Deinstallationsvorgangs ruft das Installationsprogramm das ASP.NET IIS-Registrierungstool (Aspnet_regiis.exe) mit der -u-Option (Deinstallationsflag) auf.

Hinweis:

Wenn Sie nur eine Version von ASP.NET deinstallieren möchten, ohne das zugehörige .NET Framework zu deinstallieren, können Sie Aspnet_regiis.exe direkt verwenden. Jede Installation von .NET Framework enthält eine zugeordnete Version des Tools. Wenn Sie nur ASP.NET deinstallieren möchten, verwenden Sie die -u-Option der Toolversion, die der zu deinstallierenden ASP.NET-Version zugeordnet ist. Weitere Informationen finden Sie unter ASP.NET IIS-Registrierungstool (Aspnet_regiis.exe).

Die -u-Option des Tools Aspnet_regiis.exe führt die folgenden Aktionen aus:

  • Alle ASP.NET-Anwendungen, die gegenwärtig der zu deinstallierenden ASP.NET-Version zugeordnet sind, werden der neuesten kompatiblen Version auf dem Computer zugeordnet. Wenn keine kompatible Version vorhanden ist, wird die Skriptzuordnung für die Anwendung vollständig entfernt.

    Vorsicht:

    Durch das Entfernen der Skriptzuordnungen übermittelt IIS ASP.NET-Seiten als Literaltext. Dadurch wird dem Client möglicherweise Quellcode verfügbar gemacht.

  • Wenn es sich bei der zu deinstallierenden ASP.NET-Version um die derzeit neueste Version handelt, wird der ASP.NET-Zustandsdienst der neuesten kompatiblen Version zugeordnet. Wenn keine kompatible Version vorhanden ist, wird der ASP.NET-Zustandsdienst deinstalliert. (Der ASP.NET-Zustandsdienst wird von allen kompatiblen ASP.NET-Versionen gemeinsam verwendet und stets der neuesten installierten Version von ASP.NET zugeordnet.)

  • Leistungsobjekte und die zugehörigen Leistungsindikatoren, die zur deinstallierten Version gehören, werden entfernt. Die generischen Leistungsobjekte und Leistungsindikatoren, die für alle installierten ASP.NET-Versionen und für ASP.NET-Anwendungen gelten, werden an die neueste auf dem Computer verbleibende Version geleitet.

  • Wenn keine weiteren ASP.NET-Installationen auf dem Computer verbleiben, werden das Benutzerkonto ASPNET und die zugehörigen Zugriffssteuerungslisten entfernt.

Informationen über weitere Auswirkungen der Installation mehrerer Versionen von ASP.NET finden Sie unter Übersicht über die parallele Ausführung in ASP.NET.

Verteilung von NET Framework durch Drittanbieter

Bei Drittanbieteranwendungen kann .NET Framework integriert sein und als Teil des Setups installiert werden, sofern eine besondere Verteilungslizenz vorliegt. Dadurch kann gemeinsam mit der Anwendung die spezielle Version von .NET Framework installiert werden, die für deren Ausführung erforderlich ist. Das verteilbare .NET Framework-Paket (Dotnetfx.exe) wird für eine Anwendung gemeinsam mit der Laufzeit bereitgestellt. Das Standardinstallationsskript von Dotnetfx.exe entspricht u. U. nicht den Anforderungen der Anwendung. Wenn dies der Fall ist, müssen Sie die unten beschriebenen Optionen verwenden, um .NET Framework als Teil des Setups einer Anwendung zu installieren.

Weitere Informationen über das verteilbare .NET Framework-Paket finden Sie unter Verteilung von .NET Framework. Weitere Informationen über den Endbenutzer-Lizenzvertrag (EULA) des verteilbaren Pakets finden Sie unter Bezugsquellen für das verteilbare .NET Framework-Paket.

Deaktivieren der automatischen Aktualisierung von Skriptzuordnungen

Wenn .NET Framework auf einem Computer installiert wird, auf dem bereits eine Installation vorhanden ist, werden standardmäßig alle ASP.NET-Anwendungen automatisch so aktualisiert, dass sie die neue Version von .NET Framework verwenden, sofern die Anwendungen nicht an eine inkompatible Version der Laufzeit oder an eine neuere Version der Laufzeit gebunden sind. Normalerweise führt nur ein Systemadministrator Installationen dieser Art aus. Wenn .NET Framework im Rahmen des Setups einer Anwendung installiert wird, dürfen andere Anwendungen auf dem Computer nicht gezwungen werden, diese Version der Laufzeit zu verwenden.

Als Teil des Setupskripts ruft Dotnetfx.exe i. d. R. das ASP.NET IIS-Registrierungstool (Aspnet_regiis.exe) mit der -i-Option zum Installieren von ASP.NET auf. Mit dieser Option werden die Skriptzuordnungen aller vorhandenen ASP.NET-Anwendungen aktualisiert. Um zu verhindern, dass bei der Installation die Skriptzuordungen anderer Anwendungen automatisch aktualisiert werden, verwenden Sie die Option /noaspnetupgrade beim Ausführen von Dotnetfx.exe. Diese Option bewirkt, dass das Setupprogramm stattdessen die -ir-Option von Aspnet_regiis.exe verwendet. Dadurch werden die automatische Aktualisierung von Skriptzuordnungen, die Standarddokumentation und die Schritte für den MIME-Austausch übersprungen. Die Syntax können Sie dem folgenden Befehl entnehmen:

Dotnetfx.exe /c:"install /noaspupgrade"

Manuelles Aktualisieren von Skriptzuordnungen

Gelegentlich müssen die Skriptzuordnungen für eine Anwendung manuell eingerichtet werden. Wenn für eine Anwendung ein eigenes virtuelles Verzeichnis benötigt wird, das auf die zu installierende Version von .NET Framework ausgerichtet ist, müssen Sie sicherstellen, dass das Setupprogramm Aspnet_regiis.exe auch explizit mit der -s-Option oder der -sn-Option aufruft, um die Skriptzuordnungen einzurichten.

Im folgenden Beispiel ist eine Befehlszeile dargestellt, die die Skriptzuordnungen für eine Anwendung mit dem Namen SampleApp1 aktualisiert.

Aspnet_regiis.exe -s W3SVC/1/ROOT/SampleApp1

Weitere Informationen finden Sie unter ASP.NET IIS-Registrierungstool (Aspnet_regiis.exe).

.NET Framework-Assemblyvereinheitlichung

Bei der parallelen Ausführung kann eine Anwendung aus Komponenten bestehen, die auf verschiedenen Versionen von .NET Framework aufbauen. Dies kann zu Konflikten zwischen den Abhängigkeiten der Komponenten führen. Angenommen, Komponente A baut z. B. auf .NET Framework, Version 1.1, auf und muss Version 1.1 der Assembly System.Data verwenden. Komponente B baut auf .NET Framework, Version 1.1, auf und muss Version 2.0 der Assembly System.Data verwenden. Wenn die Versionen der Assembly inkompatibel sind, aber gleichzeitig geladen werden, führt dies möglicherweise zu unbeabsichtigten Typenkonflikten oder zu anderen Problemen.

Bestimmen der zu verwendenden .NET Framework-Version durch die Anwendung

Um Anwendungen, die auf verschiedenen Versionen von .NET Framework aufbauende Komponenten beinhalten, die Verwendung verschiedener Versionen ein- und derselben Assembly zu ermöglichen, bestimmt die der Anwendung zugeordnete Version, welche Version der .NET-Framework-Assemblys von der Anwendung und all ihren Komponenten verwendet wird. Wenn die Anwendung wie im Beispiel der Version 2.0 von .NET Framework zugeordnet ist, wird Version 2.0 der Assembly System.Data geladen und von allen Komponenten der Anwendung gemeinsam verwendet. Der Verweis von Komponente A auf Version 1.1 der Assembly System.Data wird zur Laufzeit so geändert, dass er auf Version 2.0 verweist.

Wenn Sie eine aktualisierte Version einer bestimmten Assembly erworben haben, können Sie die Anwendung unabhängig davon, welche Version von .NET Framework ihr zugeordnet ist, mit dieser Assembly verknüpfen. Fügen Sie dazu der Datei Machine.config oder Web.config <bindingRedirect>-Elemente hinzu. Diese Elemente verknüpfen eine Anwendung mit einer aktualisierten Assembly, die eine vorhandene Assembly bei bestimmten Anwendungstypen ersetzt. Wenn z. B. künftig eine aktualisierte Version von System.Web.Service.dll veröffentlicht wird, die SOAP, Version 1.2, unterstützt, sollte von der Anwendung diese Version anstelle der ursprünglich mit .NET Framework installierten Version verwendet werden.

Auch dieses Verhalten kann in der ASP.NET-Hostkonfigurationsdatei (Aspnet.config) überschrieben werden. Mit dieser Datei stellt ASP.NET sicher, dass die Version von System.Web.dll und System.Web.RegularExpressions.dll immer mit der Version übereinstimmt, die der Anwendung zugeordnet wurde, unabhängig von sämtlichen Überschreibungen in der Datei Web.config.

Möglicherweise möchten Sie gelegentlich in einer mit einer früheren Version erstellten Anwendung eine Komponente verwenden, die auf einer neueren Version von ASP.NET aufbaut. Die einer Anwendung zugeordnete ASPNET ISAPI-Version bestimmt immer, welche Laufzeitversion für eine Anwendung verwendet wird. Wenn die Anwendung so konfiguriert ist, dass sie die frühere Version von .NET Framework verwendet, wird die Komponente zur Laufzeit automatisch so umgeleitet, dass sie ebenfalls diese Version verwendet.

Wenn Sie eine Komponente, die mit einer neueren Version von .NET Framework erstellt wurde, in einer Anwendung verwenden, die auf einer früheren Version aufbaut, müssen Sie Folgendes beachten:

  • Vergewissern Sie sich, dass die Komponente keine Features verwendet bzw. von keinen Verhaltensweisen abhängig ist, die nur bei der neueren Version von .NET Framework vorhanden sind. Diese Features sind in der früheren Version der Laufzeit u. U. nicht verfügbar.

  • In IIS werden Skriptzuordnungen von ASP.NET verwendet, um eine Anwendung an eine Version der Laufzeit zu binden. Weder das <supportedRuntime>-Konfigurationselement noch das <requiredRuntime>-Konfigurationselement kann in ASP.NET-Anwendungen angewendet werden.

Wenn die Laufzeitversion, mit der die Komponente erstellt wurde, auf dem Computer installiert ist, können Sie stattdessen die Anwendung auch so neu konfigurieren, dass die neuere Laufzeitversion verwendet wird. Da neuere Versionen von .NET Framework generell abwärtskompatibel gestaltet sind, kann der größte Teil der Features der Anwendung ohne weitere Änderungen verwendet werden. Sie sollten jedoch sorgfältige Tests durchführen, um sicherzustellen, dass die Ausführung der Anwendung in einer neuen Version von .NET Framework keine Fehler in der Anwendung verursacht.

Zurück nach oben

Codebeispiele

Themen mit Anweisungen und exemplarischen Vorgehensweisen

Zurück nach oben

Klassenreferenz

Zurück nach oben

Zusätzliche Ressourcen

Zurück nach oben

Neues

Zurück nach oben

Siehe auch

Referenz

Zurück nach oben

Weitere Ressourcen

Parallele Ausführung