J'ai récemment commencé à suivre ce guide pour migrer mon projet vers .NET 4.5.1 et Web Api 2.
La toute première chose que Rick Anderson vous demande de faire est de changer:
WebApiConfig.Register(GlobalConfiguration.Configuration);
à
GlobalConfiguration.Configure(WebApiConfig.Register);
dans le fichier global.asax. Pourtant, cela me donne une erreur lorsque j'essaie de construire:
Erreur 1 'System.Web.Http.GlobalConfiguration' ne contient pas de définition pour 'Configurer'
Mon projet est actuellement sur MVC 5, Web Api 2 et .NET 4.5.1. Pourtant, je pense que System.Web.Http pense toujours que c'est la version .NEt 4.0.
Comment puis-je résoudre ce problème?
Je vous remercie.
Modifier:
Voici mes reliures d'assemblage:
<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
<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>
<!--
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly> -->
</assemblyBinding>
Tout ce qui a été commenté après que le haut ait été commenté parce que je recevais l'erreur:
Avertissement 2 Des conflits constatés entre différentes versions du même assembly dépendant n'ont pas pu être résolus. Ces conflits de référence sont répertoriés dans le journal de construction lorsque la verbosité du journal est définie sur détaillé.
et se débarrasser des liaisons dures corrigeait cela.
Il faut le system.web.http.webhost qui fait partie de ce paquet. J'ai résolu ce problème en installant le paquet suivant:
PM> Install-Package Microsoft.AspNet.WebApi.WebHost
ou recherchez-le dans le nuget https://www.nuget.org/packages/Microsoft.AspNet.WebApi.WebHost/5.1.
Aucune de ces idées n'a aidé mon projet à utiliser MVC 5.2.2.
Forcer une réinstallation a corrigé le problème. Depuis la console du gestionnaire de paquets NuGet:
update-Package -reinstall Microsoft.AspNet.WebApi.WebHost
La classe GlobalConfiguration
fait partie du package Microsoft.AspNet.WebApi.WebHost
du nuget ... Avez-vous mis à niveau ce package vers Web API 2?
En plus d'utiliser la console du gestionnaire de packages pour que nuget mette à jour le projet avec Install-Package Microsoft.AspNet.WebApi.WebHost pour manquant GlobalConfiguration ,
J'avais besoin de Install-Package Microsoft.AspNet.WebApi.SelfHost pour manquant à l'aide de System.Web.Http;
Vous voudrez peut-être vérifier que votre projet a Microsoft.AspNet.WebApi.WebHost
installé. Il se trouve que, dans mon cas, Microsoft.AspNet.WebApi.WebHost
a été installé dans un autre projet, mais pas le projet en particulier qui en avait besoin. Dans votre packages.config, vérifiez qu'une ligne comme celle-ci existe:
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.1.1" targetFramework="net45" />
Si ce n'est pas présent, vous n'avez pas installé Microsoft.AspNet.WebApi.WebHost
dans votre projet. Vous pouvez installer à l’aide de Nuget Package Manager ou de la console de Package Manager. Pour installer à partir de la console du gestionnaire de packages, exécutez cette commande:
Install-Package Microsoft.AspNet.WebApi.WebHost
L'API GlobalConfiguration.Configure est disponible dans "Microsoft.AspNet.WebApi.WebHost" version = "5.2.3"
et non dans "Microsoft.AspNet.WebApi.WebHost" version = "4.0.0"
Si le problème persiste après la désinstallation et l'installation de Microsoft.AspNet.WebApi.WebHost, ajoutez également les éléments suivants dans web.config pour que la configuration globale fonctionne.
<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.2.0.0" />
</dependentAssembly>
"Install-Package Microsoft.AspNet.WebApi.Core" a très bien fonctionné.
Aucune de ces solutions n'a fonctionné pour moi. J'avais un enchevêtrement de paquets Nuget qui ne pouvaient pas se mettre à jour à cause de dépendances circulaires les uns par rapport aux autres.
Je voudrais avoir à résoudre ce problème à l'ancienne. J'ai créé un nouveau projet MVC/web api et copié manuellement System.Web.Http
et System.Web.Http.WebHost
du nouveau projet dans les dossiers Nuget de la solution existante. A partir de là, j'ai mis à jour les références par, OMG, "navigation" et corrigé le problème.
Mon problème était que le gestionnaire de paquets de nuget ne faisait pas une vraie mise à jour mais que les fichiers contenaient des références à des versions plus anciennes. le rasoir dans views/web.config à la version 3.0.0.
essayez de faire correspondre le code ci-dessous dans web.config, j'ai trouvé quelques problèmes de version et je me suis corrigé quand je correspondais aux versions.
<system.web.webPages.razor>
<Host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.2.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
<add namespace="System.Web.UI.WebControls" />
</namespaces>
</pages>
</system.web.webPages.razor>
<!-- and-->
<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-5.2.2.0" newVersion="5.2.2.0" />
</dependentAssembly>
</assemblyBinding>