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 le développeur MS 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'essaye de construire:
Erreur 1 «System.Web.Http.GlobalConfiguration» ne contient pas de définition pour «Configurer»
Mon projet est actuellement sur MVC 5 et Web Api 2 et .NET 4.5.1, mais 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.
Éditer:
Voici mes liaisons 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 a été commenté après le commentaire du haut parce que j'obtenais l'erreur:
Avertissement 2 Conflits détectés entre différentes versions du même assembly dépendant qui n'ont pas pu être résolus. Ces conflits de référence sont répertoriés dans le journal de génération lorsque la verbosité du journal est définie sur détaillée.
et se débarrasser des fixations rigides réglait cela.
Microsoft.AspNet.Web.Helpers.Mvc
abord désinstallé ?Réponses:
Il a besoin du system.web.http.webhost qui fait partie de ce package. J'ai corrigé cela en installant le package suivant:
ou recherchez-le dans nuget https://www.nuget.org/packages/Microsoft.AspNet.WebApi.WebHost/5.1.0
la source
GlobalConfiguration.Configure(WebApiConfig.Register);
été inséré dans le global.asax en haut juste après le AreaRegistration, et cela a très bien fonctionné.Microsoft.AspNet.WebApi.WebHost
à jour vers la dernière versionAucune de ces idées n'a aidé mon projet en utilisant MVC 5.2.2.
Forcer une réinstallation a corrigé le problème. À partir de la console du gestionnaire de packages NuGet:
update-Package -reinstall Microsoft.AspNet.WebApi.WebHost
la source
GlobalConfiguration
class fait partie duMicrosoft.AspNet.WebApi.WebHost
package nuget ... Avez-vous mis à niveau ce package vers Web API 2?la source
En plus d'utiliser la console du gestionnaire de packages pour obtenir nuget de mettre à jour le projet avec Install-Package Microsoft.AspNet.WebApi.WebHost pour l'absence de GlobalConfiguration ,
J'avais besoin de Install-Package Microsoft.AspNet.WebApi.SelfHost pour avoir manqué d' utiliser System.Web.Http;
la source
Vous voudrez peut-être vérifier que votre projet est
Microsoft.AspNet.WebApi.WebHost
installé. En fait, dans mon cas, aMicrosoft.AspNet.WebApi.WebHost
été installé dans un autre projet, mais pas dans le projet particulier qui en avait besoin. Dans votre packages.config, vérifiez qu'une ligne comme celle-ci est là:Si ce n'est pas présent, vous ne l'avez pas
Microsoft.AspNet.WebApi.WebHost
installé dans votre projet. Vous pouvez effectuer l'installation à l'aide du gestionnaire de packages Nuget ou via la console du gestionnaire de packages. Pour installer à partir de la console du gestionnaire de package, exécutez cette commande:la source
L'API GlobalConfiguration.Configure est disponible dans "Microsoft.AspNet.WebApi.WebHost" version = "5.2.3"
et pas dans "Microsoft.AspNet.WebApi.WebHost" version = "4.0.0"
la source
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
la source
"Install-Package Microsoft.AspNet.WebApi.Core" fonctionnait très bien.
la source
Mon problème était que le gestionnaire de packages nuget ne faisait pas de vraie mise à jour mais les fichiers contenaient des références à des versions plus anciennes, j'ai donc d'abord supprimé tous les packages liés à mvc installés (y compris le rasoir et l'api Web), puis les ai réinstallés et mis à jour la version de le rasoir dans views / web.config vers la version 3.0.0.
la source
Aucune de ces solutions n'a fonctionné pour moi. J'avais un enchevêtrement de packages Nuget qui ne pouvaient pas être mis à jour en raison de dépendances circulaires les uns sur les autres.
J'aurais dû 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
partir du nouveau projet dans les dossiers Nuget de la solution existante. De là, j'ai mis à jour les références par, OMG, "navigation" et corrigé le problème.la source
cela a résolu ce problème en ajoutant un espace de noms au fichier Global.asax.cs.
using System.Web.Http;
cela a résolu le problème.
la source