Message d’erreur après avoir installé le.NET Framework de 4.0 : « Impossible de charger le type 'System.ServiceModel.Activation.HttpModule' »


Symptômes


Envisagez le scénario suivant. Vous installez le de.NET Framework 4.0. Ensuite, vous installez une version antérieure du.NET Framework, ou vous permettre l’Activation de .NET 3.0 WCF HTTP. Dans ce scénario, le message d’erreur suivant peut s’afficher lorsque vous exécutez lorsque des applications qui sont hébergées sur Internet Information Services (IIS) :

Impossible de charger le type 'System.ServiceModel.Activation.HttpModule' de l’assembly ' System.ServiceModel, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089 ».
Description : Une exception non gérée s’est produite lors de l’exécution de la demande web en cours. Veuillez consulter la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

Détails de l’exception : System.TypeLoadException : Impossible de charger le type 'System.ServiceModel.Activation.HttpModule' de l’assembly ' System.ServiceModel, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089 ».

Cause


Ce problème se produit car le fichier Applicationhost.config pour les services Internet (WAS, Windows Process Activation Service) a défini ci-après, cette section n’est pas compatible avec le.NET Framework de 4.0 :

< Ajouter nom = « ServiceModel » type="System.ServiceModel.Activation.HttpModule, System.ServiceModel, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089 » condition préalable = « managedHandler » / >

Cette section doit être définie comme suit :

< Ajouter nom = « ServiceModel » type="System.ServiceModel.Activation.HttpModule, System.ServiceModel, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089 » condition préalable =" managedHandler, runtimeVersionv2.0 » / >

Remarque : Vous trouverez le fichier Applicationhost.config dans l’emplacement suivant :

%windir%\system32\inetsrv\config

Résolution


Pour résoudre ce problème, exécutez la ligne de commande suivante :

aspnet_regiis.exe /iru

Le fichier Aspnet_regiis.exe se trouve dans un des emplacements suivants :

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

%windir%\Microsoft.NET\Framework64\v4.0.30319 (sur un ordinateur 64 bits)