web-dev-qa-db-fra.com

Impossible de charger le fichier ou l'assembly 'System.Web.Http 4.0.0 après la mise à jour de 2012 à 2013

J'ai fait la mise à niveau selon. http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc -5-and-web-api-2

Je reçois l'erreur. Est-ce que quelqu'un d'autre a eu cette erreur?

Erreur serveur dans l'application '/'.

Impossible de charger le fichier ou l'assembly 'System.Web.Http, Version = 4.0.0.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35 'ou l'un de ses dépendances. La définition du manifeste de l’Assemblée localisée n’est pas correspondre à la référence de l'Assemblée. (Exception de HRESULT: 0x80131040)
Description: une exception non gérée s'est produite lors de l'exécution de la demande Web en cours. Veuillez vérifier la trace de la pile pour plus d'informations informations sur l'erreur et son origine dans le code. 

Détails des exceptions: System.IO.FileLoadException: Impossible de charger le fichier ou Assembly 'System.Web.Http, Version = 4.0.0.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35 'ou l'une de ses dépendances. Le La définition du manifeste de l'Assemblée localisée ne correspond pas à celle de l'Assemblée référence. (Exception de HRESULT: 0x80131040)

Erreur de source: 

Ligne 48: Ligne 49: Ligne 50:} Ligne 51: ligne 52: application voilée protégée Application_BeginRequest (objet Sender, EventArgs e)

Fichier source: Ligne d:\SM\7.4Test\WebAPIServerV2\ThirdPartyWebAPI\Global.asax.cs: 50 

Suivi de la charge d'assemblage: Les informations suivantes peuvent être utiles à déterminer pourquoi l'assembly 'System.Web.Http, Version = 4.0.0.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35 'n'a pas pu être chargé.

=== Informations d'état préalables à la liaison === LOG: DisplayName = System.Web.Http, Version = 4.0.0.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35 (Complètement spécifié) LOG: Appbase = fichier: /// D: /SM/7.4Test/WebAPIServerV2/ThirdPartyWebAPI/ LOG: valeur initiale PrivatePath = D:\SM\7.4Test\WebAPIServerV2\ThirdPartyWebAPI\bin Assemblée appelante: ThirdPartyWebAPI, version = 1.0.0.0, Culture = neutre, PublicKeyToken = null . === LOG: Cette liaison commence dans le contexte de chargement par défaut. LOG: Utilisation du fichier de configuration de l'application: D:\SM\7.4Test\WebAPIServerV2\ThirdPartyWebAPI\web.config JOURNAL: Utilisation de Fichier de configuration de l'hôte: C:\Utilisateurs\michalc\Documents\IISExpress\config\aspnet.config JOURNAL: Utilisation de Fichier de configuration de la machine à partir de C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config . LOG: Référence post-stratégie: System.Web.Http, Version = 4.0.0.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35 LOG: Tentative téléchargement de la nouvelle URL fichier: /// C: /Windows/Microsoft.NET/Framework/v4.0.30319/Temporary Fichiers ASP.NET/root/9184b2ea/c6d4b139/System.Web.Http.DLL. BÛCHE: Tentative de téléchargement d’une nouvelle URL fichier: /// C: /Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Fichiers/racine/9184b2ea/c6d4b139/System.Web.Http/System.Web.Http.DLL. BÛCHE: Tentative de téléchargement d’une nouvelle URL fichier: /// D: /SM/7.4Test/WebAPIServerV2/ThirdPartyWebAPI/bin/System.Web.Http.DLL. WRN: la comparaison du nom de l'assembly a abouti à la non-concordance: major Version ERR: Impossible de terminer la configuration de l’assemblage (hr = 0x80131040) . Sondage terminé.

Trace de la pile: 

[FileLoadException: impossible de charger le fichier ou l'assembly 'System.Web.Http, Version = 4.0.0.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35 'ou une de ses dépendances. Définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée. (Exception de HRESULT: 0x80131040)] ThirdPartyWebAPI.WebApiApplication.Application_Start () dans d:\SM\7.4Test\WebAPIServerV2\ThirdPartyWebAPI\Global.asax.cs: 50

[HttpException (0x80004005): Impossible de charger le fichier ou l’Assembly 'System.Web.Http, Version = 4.0.0.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35 'ou l'une de ses dépendances. Le La définition du manifeste de l'Assemblée localisée ne correspond pas à celle de l'Assemblée référence. (Exception de HRESULT: 0x80131040)]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode (HttpContext Context, application HttpApplication) +9935033
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS (IntPtr AppContext, contexte HttpContext, gestionnaires MethodInfo []) +118
System.Web.HttpApplication.InitSpecial (état HttpApplicationState, gestionnaires MethodInfo [], IntPtr appContext, contexte HttpContext) +172
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance (IntPtr AppContext, contexte HttpContext) +336



Informations de version: Microsoft .NET Framework Version: 4.0.30319; Version ASP.NET: 4.0.30319.18408

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18408

173

J'ai corrigé cela en réinstallant le paquet NuGet , qui corrige les dépendances brisées. Depuis le gestionnaire de paquets, exécutez:

Update-Package Microsoft.AspNet.WebApi -reinstall
274
Pathoschild

Pour résoudre l'erreur Impossible de charger le fichier ou l'erreur d'assembly 'System.Web.Http', utilisez NuGet pour installer Web API 2.1 WebHost.

Dans la solution Explorateur, dans les références, cliquez avec le bouton droit de la souris et sélectionnez Gérer les paquets de nugets. (sinon installez le nuget)

enter image description here

Dans la fenêtre de gestion des packages NuGet sur le côté gauche, cliquez en ligne puis, en haut à droite, recherchez Web Host et installez l'hôte Web Microsoft ASP.NET Web API 2.1. (Une fois installé, le bouton d'installation deviendra une coche verte)

Après cela, le projet sera rechargé et quand il sera reconstruit, l'erreur sera résolue et le projet sera débogué et exécuté. L'erreur aura disparu et vous pouvez être 'La ressource est introuvable. Il suffit d’ajouter l’URL (ex de localhost: 52088/à localhost: 52088api/products)

Votre question était bonne et m'a aidé.

J'espère que cette réponse aide!

84
Catto

Vous devez ajouter des redirections d'assemblage:

<configuration>

   ....

   <runtime>
      <assemblyBinding>
    <dependentAssembly>
        <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="5.0.0.0" />
      </dependentAssembly>
      </assemblyBinding>
   </runtime>

   ...

</configuration>

Très probablement, vous devrez le faire pour quelques assemblées supplémentaires telles que l'hébergement Web, etc.

58
Aliostad

Ou vous pouvez le faire depuis la console NuGet Package Manager

 Install-Package Microsoft.AspNet.WebApi -Version 5.0.0

Et vous pourrez ensuite ajouter la référence à System.Web.Http.WebHost 5.0

16
Sameer

Lorsque j'ai installé Web Api 2.2, cette erreur a commencé. J'ai ajouté ceci au web.config et cela a résolu mon problème.

  <dependentAssembly>
    <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" />
  </dependentAssembly>
15
jhilden

J'ai simplement mis Copy Local = true sur l'assemblage manquant et cela a fonctionné. Cela se produit bien sûr en cliquant avec le bouton droit de la souris sur la référence manquante (ce qui est indiqué dans le message d'erreur) et en sélectionnant les propriétés. comme ci-dessous:

 enter image description here

Cela devrait alors résoudre un problème car il pourrait y avoir plus d'une assemblée à l'origine du problème - ce que j'ai fait est de sélectionner tous les assemblages et de cliquer dessus avec le bouton droit de la souris; propriétés sélectionnées; et définissez-les tous sur Copy Local = true; puis republier.

4
t_plusplus

La solution appropriée pour résoudre ce problème consiste à suivre les étapes suivantes

. Mettez à jour Visual studio si vous avez une version antérieure à 15.5.4 (facultatif)

  1. Supprimer toutes les redirections de liaison de web.config

  2. Ajoutez ceci au fichier csproj:

 <PropertyGroup>
  <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
  <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
  1. Construire.

  2. Dans le dossier bin, il devrait y avoir un fichier (WebAppName).dll.config.

  3. Il devrait y avoir des redirections. Copiez-les dans le fichier web.config

  4. Supprimez à nouveau le fichier extrait de csproj.

  5. Ça devrait marcher

Detailed Blog

3
Sajeetharan

Un conseil utile, évident mais possible ... N'oubliez pas de vérifier que la nouvelle version que vous spécifiez dans votre liaison Assembly de webconfig est identique à celle que vous avez référencée dans vos références de projet. (c'est-à-dire que j'écris ceci ... ce serait 5.1.0.0 si vous avez récemment effectué un NUGet sur System.Web.Http

2
Jim Taliadoros

Cela pourrait aider quelqu'un.

J'ai décidé d'aller avec l'application MVC4.

run projet, travaillé

Puis installé quelques paquets comme,
API Web Microsoft ASP.NET 2.2 (4 packages)
Page d’aide de Microsoft ASP.NET WEB API 2.2
API Web ASP.NET Microsoft 2.2 OWIN

run project, même erreur que celle mentionnée dans la question

Solution:

Dans web.config

 <dependentAssembly>
      <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.2.3.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.2.3.0" />
 </dependentAssembly>


Problème résolu


mais ensuite, un certain correctif erreur trouvé, Pour le résoudre, allez dans VIEW dossier de votre projet MVC4 , find secondweb.config fichier et version modifiée de 2.0.0.0 à 3.0.0.0 comme indiqué ci-dessous .


<configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="Host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
  </configSections>

2
micronyks
 Installing NuGet package ASP.NET.MVC solved the issue for me. 
 To install package.
 - Right click on project 
 - Select "Manage NuGet Packages"
 - Select Online->Nuget.org from left menu
 - select "Microsoft ASP.NET MVC"
 - Click Install

 If you have already installed package earlier, please update the package by selecting Updates from left menu and then selecting "Microsoft ASP.NET" and click Update.

 enter image description here

 enter image description here

2
Arvind Krmar

Dans mon cas, il me manquait en fait mon web.config, qui comportait les redirections de liaison appropriées. La restauration du web.config a résolu l'erreur.

2
Brandon Hawbaker

J'ai trouvé la solution! Supprimez le dossier nommé package dans le répertoire du projet puis reconstruisez-le pour l'exécuter.

1
Ashitosh birajdar

Je n'ai pas rien fait, juste copié le développement Bin dossier DLL vers en ligne déployé Bin dossier et cela a bien fonctionné pour moi.

1
Anjan Kant

Je pourrais résoudre un problème similaire avec System.Net.HTTP en ajoutant une référence d'assemblage dans app.config de l'application principale.

  <runtime>
    <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.1.1.1" newVersion="4.0.0.0" />
      </dependentAssembly></runtime>
1
Parag Bangad

OUI!!!

Install-Package Microsoft.AspNet.WebApi -Version 5.0.0

Cela fonctionne très bien dans mon cas .... thnkz

1
X-Coder
<dependentAssembly>
    <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
<dependentAssembly>
    <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
1
ravula sandeep

Pour moi, cette erreur ne fonctionnait que sur un environnement de production, pas sur une machine locale; ce qui a résolu le problème était de supprimer le contenu du dossier/bin, puis de le régénérer à nouveau.

1
Oana Leva

Comme d'autres l'ont dit, réinstallez le package MVC dans votre projet Web à l'aide de nuget, mais veillez à ajouter le package MVC à tous les projets en fonction du projet Web, tels que les tests unitaires. Si vous construisez chaque projet inclus individuellement, vous verrez les projets nécessitant la mise à jour.

0
DeeArgee

J'ai eu ce problème lors du déploiement sur Azure à l'aide de la fonctionnalité de publication . N'oubliez pas d'effacer les fichiers à la destination.

Publish Settings -> File Publish Options drop down -> Check Remove additional files at destination

Cela a résolu mon problème, au cas où les gens seraient obligés de rechercher ce que je faisais. Tout était la même version dans mon projet/solution, mais pas à la destination où je me déployais.

0
Shelby115

J'ai eu le même problème et la réinstallation du paquet ne fonctionne pas.

Mon application s'exécute dans LocalIIS (pas IIS EXPRESS). J'active la trace de chargement d'assemblage et découvre qu'il veut charger System.Web.Http load à partir de la température inférieure. so supprime tous les dossiers de capture qu'il contient.

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Fichiers ASP.NET temporaires [mon application]

0
Mohammadreza

J'ai résolu ce problème en annulant les modifications apportées par nuget à mon web.config après avoir exécuté nuget. Restaurer les modifications à une version de travail précédente.

  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" />
  </dependentAssembly>
0
roo2

Si vous utilisez plusieurs projets sur une solution , et appelez la méthode d'un projet à un autre, assurez-vous que tous les projets (appelés projet et appelant projet) utilisent l'unique 'System.Net.Http' version .

0
MohammadSoori

J'ai eu cela d'un service WCF. Pour moi (car le problème était affiché dans le développement local), je devais simplement supprimer le contenu du dossier bin de la solution. La reconstruction fonctionne encore une fois.

0
DubMan

Ce qui a résolu le problème pour moi, c’est de réinstaller la Page d’aide de Microsoft ASP.NET Web API 2.2 et Microsoft ASP.NET Web API 2.2 OWIN packages. J'ai réinstallé les deux en même temps, mais je pense que c'est l'ancien qui a résolu le problème.

J’ai essayé les premières solutions proposées ici, mais cela n’a pas fonctionné, puis j’ai comparé mes dépendances à celles d’un projet qui fonctionnait (à partir d’un cours sur Pluralsight). ) donc je les ai mis à jour en 5.2.3 et cela a commencé à fonctionner.

0
lukegf

J'ai eu le même problème avec System.Web.Http.WebHost, Version = 5.2.6.0 étant référencé, mais le dernier package NuGet était 5.2.7.0. J'ai édité les fichiers web.config, réinstallé le package NuGet, puis modifié les fichiers de projet Visual Studio pour tous mes projets afin de m'assurer qu'aucune référence à 5.2.6.0 ne persistait. Même après tout cela, le problème a persisté.

Ensuite, j'ai cherché dans le dossier bin le projet qui lançait l'exception, où j'ai trouvé un DLL pour l'un de mes autres projets, qui n'est pas une dépendance et qui n'aurait jamais dû y être. J'ai supprimé le DLL incriminé (qui avait été compilé à l'aide de la version 5.2.6.0 de System.Web.Http.WebHost), j'ai reconstruit le projet qui posait problème, et il fonctionne maintenant.

0
cghore

J'ai eu un problème similaire. Tout fonctionnait avant. Il a été créé à l’origine à l’aide de Web Forms, puis a été ajouté à des API Web.

  • J'ai essayé de désinstaller, d'installer et de réinstaller le package Microsoft.AspNet.WebApi.
  • J'ai essayé de supprimer le dossier packages de la solution et de laisser NuGet restaurer dans VS.
  • J'ai essayé de supprimer des références d'assemblage individuelles (sous Références) et de réinstaller des packages.
  • J'ai essayé d'ajouter des redirections de liaisons vers la version 5.2.3.0 dans web.config, mentionnées dans plusieurs réponses. Rien n'a fonctionné pour moi.

Ce qui a fonctionné a été, dans Visual Studio, de modifier les paramètres de profil de publication de Release à Debug. Étrange, mais c'est ce qui a fonctionné. Alors partage ici.

0
joym8

La version ASP.NET: 4.0.30319.18408 appartient à .Net4.5 et System.Web.Http Version = 4.0.0.0 est compatible avec .NET4.0. Donc, les versions que vous avez ne sont pas compatibles. Vous devez mettre à jour System.Web.Http vers la version 5.0.0.0, qui est compatible avec .Net4.5.

0
oscarMg

Modifier l'indicateur de version spécifique de true à false pour la dll dans la référence

0
user2992715