Fehlermeldung nach der Installation von.NET Framework 4.0: "Konnte nicht geladen werden"System.ServiceModel.Activation.HttpModule"Typ"


Problembeschreibung


Das folgende Szenario. Sie installieren das.NET Framework 4.0. Anschließend installieren Sie eine frühere Version von.NET Framework oder .NET 3.0 WCF HTTP-Aktivierung aktivieren. In diesem Szenario möglicherweise die folgende Fehlermeldung wird als Anwendung ausführen, die auf Internet Information Services (IIS) gehostet:

Typ 'System.ServiceModel.Activation.HttpModule' konnte nicht aus der Assembly geladen "System.ServiceModel, Version = 3.0.0.0, Culture = Neutral, PublicKeyToken = b77a5c561934e089'.
Beschreibung: Während der Ausführung der aktuellen Webanfrage ist eine nicht behandelte Ausnahme aufgetreten. Überprüfen Sie weitere Informationen über den Fehler und Ursprung im Code Stapelrahmen.

Details der Ausnahme: System.TypeLoadException: Typ 'System.ServiceModel.Activation.HttpModule' konnte nicht aus der Assembly geladen "System.ServiceModel, Version = 3.0.0.0, Culture = Neutral, PublicKeyToken = b77a5c561934e089'.

Ursache


Dieses Problem tritt auf, weil die Datei Applicationhost.config für Windows Process Activation Service (WAS) Abschnitt definiert, und in diesem Abschnitt nicht kompatibel mit.NET Framework 4.0 ist:

< Namen hinzufügen = "ServiceModel" type="System.ServiceModel.Activation.HttpModule, System.ServiceModel, Version = 3.0.0.0, Culture = Neutral, PublicKeyToken = b77a5c561934e089" PreCondition = "ManagedHandler" / >

Dieser Abschnitt sollte wie folgt definiert:

< Namen hinzufügen = "ServiceModel" type="System.ServiceModel.Activation.HttpModule, System.ServiceModel, Version = 3.0.0.0, Culture = Neutral, PublicKeyToken = b77a5c561934e089" PreCondition = "ManagedHandler, runtimeVersionv2.0" / >

Hinweis Die Datei "applicationHost.config" finden Sie im folgenden Verzeichnis:

%windir%\system32\inetsrv\config

Problemlösung


Um dieses Problem zu beheben, führen Sie die folgende Befehlszeile:

aspnet_regiis.exe /iru

Die Datei Aspnet_regiis.exe finden in einem der folgenden Speicherorte:

%windir%\Microsoft.NET\Framework\v4.0.30319

%windir%\Microsoft.NET\Framework64\v4.0.30319 (auf einem 64-Bit-Computer)