Après avoir installé le package OData de l'API Web ASP.NET Microsoft 5.0.0-rc1 , je me retrouve avec l'exception suivante:
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. La 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)
Mon projet MVC 4 est flambant neuf et vraiment petit, rien d’extraordinaire. Je cible .NET Framework 4.5
J'ai besoin de ceci paquet de nuget à implémente PATCH en utilisant la classe Delta (lorsque j'utilise la version 4.0.0.0 du paquet, la classe Delta ne fonctionne pas).
Comment puis-je résoudre ce problème?
Dans GAC j'ai la version 5.0.0.0 de System.Web .Http
gacutil -l System.Web.Http Le Global Assembly Cache contient les assemblys suivants: System.Web.Http, Version = 5.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 ,oprocessArchitecture = MSIL
Dans Visual Studio , lorsque je navigue dans des assemblys, la version donnée de System.Web.Http est 4.0.0.0 (Pourquoi?)
Dans mon projet , la référence à System.Web.Http
J'ai essayé de lier les redirections v 4.0.0.0 à 5.0.0.0 dans Web.config
<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="4.0.0.0-4.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
Mais cela me donne une autre exception:
La tentative par la méthode 'System.Web.Http.GlobalConfiguration..cctor ()' pour accéder au champ 'System.Web.Http.GlobalConfiguration.CS $ <> 9__CachedAnonymousMethodDelegate2' a échoué.
Je suppose que la v 4.0.0.0 doit vraiment être utilisée par le moteur Web Api principal.
Erreur d'analyse de code Impossible de charger le fichier ou l'assembly 'System.Net.Http, version = 2.0.0.0 dans l'API Web MVC4Impossible de charger le fichier ou l'assembly' System.Net.Http, version = 2.0.0.0 dans l'API Web MVC4
Visual Studio 2013 propose une nouvelle fonctionnalité. Lorsque vous créez l'application, vous devriez voir des avertissements concernant les différentes versions d'un assemblage référencé. Double-cliquez sur l'avertissement pour ajouter des redirections de liaison d'assemblage vers le fichier web.config.
Voir http://msdn.Microsoft.com/en-us/library/2fc472t2.aspx pour plus de détails.
jeff.eynon note ci-dessous que vous devez extraire le fichier web.config (si vous utilisez le contrôle de code source TFS) pour que VS modifie automatiquement le fichier. Merci pour le conseil!
Je l'ai fait fonctionner en mettant à jour le paquet WebApi vers la version préliminaire en utilisant nuget:
PM> Microsoft.AspNet.WebApi -Pre
Pour forcer le projet avec la dernière version de WebApi, certaines modifications du fichier Web.config racine étaient nécessaires:
1) Version des pages Web du 2.0.0.0 au 3.0.0.0
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
</appSettings>
2) Liaison à la redirection vers 5.0.0.0 pour System.Web.Http et System.Net.Http.Formatting
<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>
Je pense que c'est ça
PS: Solution hautement inspirée de WebAPI OData 5.0 Beta - L’accès à GlobalConfiguration génère une erreur de sécurité
J'ai rencontré ce problème lorsque j'ai essayé de mettre à jour un projet Hot Towel à partir du modèle de projet et que j'ai créé un projet vide et installé HotTowel via nuget dans VS 2012 à compter du 23/10/2013.
Pour résoudre ce problème, j'ai mis à jour via Nuget les packages de l'hôte Web Api Web et de l'API Web vers la version 5.0, la version actuelle de NuGet pour le moment (10/23/2013).
J'ai ensuite ajouté la liaison directe:
<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>
J'ai rencontré le même problème et je l'ai résolu en définissant CopyLocal sur true pour les bibliothèques suivantes:
System.Web.Http.dll
System.Web.Http.WebHost.dll
System.Net.Http.Formatting.dll
Je dois ajouter que j'utilise MVC4 et NET 4
Ou vous pouvez le faire à partir de 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
Supprimez System.Web.Http et System.Net.Http.Formatting de vos références et ajoutez des références en accédant à votre dossier bin (où elles ont été copiées par nuget). La version du fichier indique maintenant la version 5.0.0.0.
J'ai fait face à la même erreur. Lorsque j'ai installé Unity Framework pour Dependency Injection, les nouvelles références de Http et HttpFormatter ont été ajoutées à ma configuration. Alors voici les étapes que j'ai suivies.
J'ai lancé la commande suivante sur la console nuGet Package Manager: PM> Install-Package Microsoft.ASPNet.WebAPI -pre
Et ajouté une référence physique à la DLL avec la version 5.0
Cette erreur est apparue plusieurs fois sur plusieurs projets différents.
Ce que j’ai finalement compris, c’est que lorsque j’ai construit, il y avait déjà une copie de l’assemblée binaire system.web.mvc dans mon dossier bin.
Pour résoudre ce problème, cliquez avec le bouton droit de la souris sur l'assemblage dans la liste de références et sélectionnez "Propriétés". Vérifiez s'il s'agit de la dernière version en consultant la propriété "Version". Si c'est le cas, basculez "Copier local" sur true.
Cela garantira que la version référencée dans votre projet est la version qui se retrouvera dans votre dossier des fichiers binaires.
Si l'erreur persiste, essayez d'exécuter nuGet pour obtenir la dernière version, puis réessayez.
Bonne chance - cette erreur est une douleur!
je résous par voie de nuget. le premier vous installez nuget. la seconde que vous utilisez.
illustration suivante:
troisième: vérifiez s'il s'agit de la dernière version en consultant la propriété "Version".
Enfin, vous vérifiez que le projet a de nouveau la dernière version.
J'ai rencontré le même type de problème et j'ai suivi les étapes ci-dessous pour le résoudre.
Allez dans Outils -> Gestionnaire de packages de bibliothèque -> Console du gestionnaire de packages et exécutez la commande ci-dessous.
Package d'installation Microsoft.ASPNet.WebAPI -pre
Entré dans le gestionnaire de paquets Nuget et mis à jour mes paquets. Maintenant ça marche. Le principal que j'ai mis à jour était le Microsoft.AspNet.WebApi.Core. Vous devrez peut-être le faire avec les deux projets pour synchroniser les références appropriées.
Après avoir modifié les références dans le fichier Web.config
comme indiqué ci-dessus, nous avons résolu les références.
Je faisais face à un problème similaire.
Pour nous, nous avons les références Microsoft.Data.Edm.dll
et OData.dll
et d'autres assemblys de Program Files:
C:\Program Files (x86)\Microsoft WCF Data Services\5.0
\bin\.NETFramework\Microsoft.Data.Edm.dll
et
C:\Program Files (x86)\Microsoft WCF Data Services\5.0
\bin\.NETFramework\Microsoft.Data.OData.dll
et la version était 5.6.4.
Une fois que j'ai changé la référence des deux assemblys en C:\....Project\packages\Microsoft.Data.Edm.5.6.0
, le problème a été résolu.
Si ce problème se produit, veuillez consulter web.config dans la section ci-dessous.
La section ci-dessous donne la version de la DLL particulière utilisée
après avoir vérifié cette section dans web.config, ouvrez l'Explorateur de solutions et sélectionnez une référence dans l'arborescence du projet, comme indiqué. Explorateur de solutions-> Référence
Après avoir développé la référence, recherchez la DLL qui a provoqué l'erreur. Cliquez avec le bouton droit de la souris sur la référence de la DLL et recherchez la version illustrée ci-dessus.
Si la version de la DLL de configuration et la DLL référencée sont différentes, vous obtiendrez cette exception. Assurez-vous que les deux sont de la même version, ce qui aiderait.