web-dev-qa-db-fra.com

GlobalConfiguration.Configure () non présent après la migration de Web API 2 et .NET 4.5.1

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.

143
nzondlo

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.

265
Tyrone Moodley

Aucune de ces idées n'a aidé mon projet à utiliser MVC 5.2.2.

  • System.web.Http 5.2.2 était déjà installé
  • La suppression du dossier Packages et le re-téléchargement complet de toutes les bibliothèques NuGet n'ont rien donné
  • Web.config avait déjà une entrée dependAssembly pour System.Web.Http

Forcer une réinstallation a corrigé le problème. Depuis la console du gestionnaire de paquets NuGet:

update-Package -reinstall Microsoft.AspNet.WebApi.WebHost

81
Charles Burns

La classe GlobalConfiguration fait partie du package Microsoft.AspNet.WebApi.WebHost du nuget ... Avez-vous mis à niveau ce package vers Web API 2?

43
Kiran Challa

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;

27
Tyeth

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
10
Cameron Tinker

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"

5
user3508883

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>
2

"Install-Package Microsoft.AspNet.WebApi.Core" a très bien fonctionné.

2
Terry Mosoma

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.

1
Micah B.

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.

1
Soniku

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>
0
user10884045