93 votes

Impossible de charger fichier ou assemblage ' System.Net.Http, Version = 2.0.0.0 dans MVC4 Web API

J'ai un peu un problème bizarre.
J'ai développé une application avec MVC 4 et la nouvelle API Web et il fonctionne très bien en local. J'ai installé MVC4 sur le serveur et déployé l'application. Maintenant, je reçois le message d'erreur suivant:

Impossible de charger le fichier ou l'assembly 'Système.Net.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' ou une de ses dépendances. L'assemblée manifeste définition ne correspond pas à la référence d'assembly. (Exception de HRESULT: 0x80131040)

Description: Une exception non gérée s'est produite pendant l'exécution de la demande web actuelle. Veuillez consulter la trace de la pile pour plus d'informations sur l'erreur et où il trouve son origine dans

Assez drôle, la version du Système.Net.Http que j'localement ont soit dans mon dossier de package ou dans le ASP.NET MVC 4\Assemblées dossier est 1.0.0.0. J'ai effectivement supprimé la référence au Système.Net.Http de mon projet, mais j'ai toujours le même message. Je suis un peu confus sur où il obtient le 2.0.0.0 de référence et les raisons pour lesquelles il serait de travailler en local, mais pas sur le serveur.

En regardant les nuget dépendances:

ASP.NET l'API WEb de Bibliothèques de Base (Bêta) dépend du Système.Net.Http.La mise en forme.
Et Le Système.Net.Http.Mise en forme dépend du Système.Net.Http.
Je suppose que c'est d'où cela vient. Mais j'ai la Version 2.0.20126.16343 de ce paquet installé, c'est juste que la dll à l'intérieur de la version 1.0.0.0

Ai-je raté quelque chose?

Mise à JOUR:

C'est un sous-application d'une autre ASP.NET app, mais l'autre est toujours basée sur les Formulaires web. Donc, quelque chose se fait foiré. Mais si je fais un nettoyage en vertu de la section assemblage dans le site web.config si n'a même pas de trouver l'application elle-même plus.

116voto

Krzysztof Points 856

J’ai eu la même erreur tout en déployant précédemment reconvertie (à partir de .NET 4.5 à 4,0) web app sur IIS 6.0.

Dans la section exécution de web.config, j’ai trouvé

dont j’ai changé pour

Travaille maintenant comme charme.

31voto

alexanderb Points 6553

J’ai eu le même problème avec déploiement de mon application à appharbor. Le problème, il ne supporte pas encore les 4.5 .NET. Ce que j’ai fait.

  1. Passé mon projet à profil .NET 4.0.
  2. Désinstallé API NuGet Web package.
  3. Paquet de NuGet API Web (Beta) installé à nouveau.
  4. Vérifié que ce fichier .csproj contient pour les assemblys référencés tout, donc il faudra toujours ce dossier Bin, au lieu de GAC.

10voto

Clive Points 402

Le mien a travaillé avec:

Notez la redirection de 1-4 à 2.0

 <dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a"   culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="2.0.0.0"/>
</dependentAssembly>
 

2voto

GeekyMonkey Points 5036

Dans votre projet de dossier de Références il devrait y avoir une référence à ce fichier, et la version 2.0.0.0. Assurez-vous que cela est défini à la Copie Locale = true. Et puis assurez-vous qu'il trouve son chemin vers votre serveur app du dossier bin.

C'est l'une des bibliothèques qui est maintenant géré par nuget. Donc, ouvrez Nuget et assurez-vous que tout est à jour. Et dans vos projets de paquets, le fichier devrait être ici: \packages\System.Net.Http.2.0.20126.16343\lib\net40

Vous pouvez également essayer de créer un nouveau MVC4 application et voir si le fichier s'affiche.

2voto

knocte Points 4320

Dans mon cas, je l'ai corrigé d'une manière beaucoup plus simple, il suffit de donner un HintPath à la référence au paquet Nuget:

      <Reference Include="System.Data.Entity" />
     <Reference Include="System.Net.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
       <Private>True</Private>
+      <HintPath>..\..\packages\Microsoft.Net.Http.2.0.20710.0\lib\net40\System.Net.Http.dll</HintPath>
     </Reference>
     <Reference Include="System.Net.Http.WebRequest, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
       <Private>True</Private>
+      <HintPath>..\..\packages\Microsoft.Net.Http.2.0.20710.0\lib\net40\System.Net.Http.WebRequest.dll</HintPath>
     </Reference>
     <Reference Include="System.Numerics" />
     <Reference Include="System.Security" />
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X