GlobalConfiguration.Configure () ist nach der Migration von Web API 2 und .NET 4.5.1 nicht vorhanden

148

Ich habe kürzlich begonnen, diesem Handbuch zu folgen , um mein Projekt auf .NET 4.5.1 und Web Api 2 zu migrieren.

Das allererste, was MS-Entwickler Rick Anderson von Ihnen verlangt, ist eine Änderung:

WebApiConfig.Register(GlobalConfiguration.Configuration);

zu

GlobalConfiguration.Configure(WebApiConfig.Register);

in der Datei global.asax. Dies gibt mir jedoch einen Fehler, wenn ich versuche zu bauen:

Fehler 1 'System.Web.Http.GlobalConfiguration' enthält keine Definition für 'Konfigurieren'

Mein Projekt ist derzeit auf MVC 5 und Web Api 2 und .NET 4.5.1, aber ich denke, System.Web.Http glaubt immer noch, dass es die .NEt 4.0-Version ist.

Wie kann ich das beheben?

Danke dir.

Bearbeiten:

Hier sind meine Montagebindungen:

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

Alles, was nach dem Oben kommentiert wurde, wurde kommentiert, weil ich den Fehler bekam:

Warnung 2 Es wurden Konflikte zwischen verschiedenen Versionen derselben abhängigen Assembly gefunden, die nicht gelöst werden konnten. Diese Referenzkonflikte werden im Erstellungsprotokoll aufgelistet, wenn die Protokollausführlichkeit auf detailliert eingestellt ist.

und die harten Bindungen loszuwerden, reparierte das.

nzondlo
quelle
1
Haben Sie Microsoft.AspNet.Web.Helpers.Mvczuerst deinstalliert ?
Blaise
Schauen Sie sich meine Antwort an stackoverflow.com/a/20653546/3114457 Es sollte Ihre Probleme mit der Migration beheben
Livius
5
Bitte markieren Sie stackoverflow.com/a/21514748/2343 als richtige Antwort!
Sameer Alibhai

Antworten:

271

Es benötigt den system.web.http.webhost, der Teil dieses Pakets ist. Ich habe dies behoben, indem ich das folgende Paket installiert habe:

PM> Install-Package Microsoft.AspNet.WebApi.WebHost 

oder suchen Sie danach in nuget https://www.nuget.org/packages/Microsoft.AspNet.WebApi.WebHost/5.1.0

Tyrone Moodley
quelle
Wurde automatisch hinzugefügt, als ich einen API-Controller hinzufügte. Ich musste VS2015 neu starten, um es in Gang zu bringen. Ich habe auch alles andere getan, was auf dieser Seite empfohlen wurde, also nicht sicher, was das eigentliche Problem war.
Piotr Kula
6
Das hat bei mir nicht funktioniert. Das Paket ist bereits in meinem Projekt installiert.
Shimmy Weitzhandler
Interessant war, dass der Webhost bereits installiert war und immer noch nicht funktionierte. Dann ändere ich die Reihenfolge, in der GlobalConfiguration.Configure(WebApiConfig.Register);der Webhost in die global.asax eingefügt wurde, nach der AreaRegistration nach oben, und es hat einwandfrei funktioniert.
PedroSouki
warum haben sie so etwas nicht geschrieben? Es dauert eine halbe Stunde, bis ich Ihre Antwort gefunden habe
Homayoun Behzadian
Arbeitete für mich nach dem Update Microsoft.AspNet.WebApi.WebHostauf die neueste Version
Peter van Kekem
86

Keine dieser Ideen hat meinem Projekt mit MVC 5.2.2 geholfen.

  • System.web.Http 5.2.2 wurde bereits installiert
  • Das Löschen des Ordners "Pakete" und das vollständige erneute Herunterladen aller NuGet-Bibliotheken haben nichts bewirkt
  • Web.config hatte bereits einen abhängigen Assembly-Eintrag für System.Web.Http

Das Erzwingen einer Neuinstallation hat das Problem behoben. Über die NuGet-Paketmanagerkonsole:

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

Charles Burns
quelle
1
Ich hatte das gleiche Problem, aber die Neuinstallation hat es nicht behoben, zumindest sah es so aus und machte mich verrückt. Ich musste VS2015 neu starten und es wurde behoben.
Piotr Kula
Es sieht so aus, als ob die Kombination aus Neustart vs2013 + Neuinstallation das Problem für mich gelöst hat
Ram
43

GlobalConfigurationKlasse ist Teil des Microsoft.AspNet.WebApi.WebHostNuget-Pakets ... Haben Sie dieses Paket auf Web API 2 aktualisiert?

Kiran Challa
quelle
1
Ja. Es ist Version 5.0.0
nzondlo
1
Haben Sie zufällig Weiterleitungen zu Assemblybindungen in Ihrer web.config? Wenn ja, könnten Sie sie teilen ... Ich suche speziell, ob es irgendwelche im Zusammenhang mit System.Web.Http * Baugruppen gibt ..
Kiran Challa
Ich habe gerade alle meine Baugruppenbindungen veröffentlicht.
Nzondlo
30

Verwenden Sie nicht nur die Paketmanager-Konsole, um Nuget zum Aktualisieren des Projekts mit Install-Package Microsoft.AspNet.WebApi.WebHost zu veranlassen, da GlobalConfiguration fehlt ,

Ich brauchte das Installationspaket Microsoft.AspNet.WebApi.SelfHost, um mit System.Web.Http zu fehlen .

Tyeth
quelle
1
Können Sie uns etwas mehr erklären?
Dieter Meemken
10

Möglicherweise möchten Sie überprüfen, ob Ihr Projekt Microsoft.AspNet.WebApi.WebHostinstalliert wurde. Wie sich herausstellte, wurde in meinem Fall Microsoft.AspNet.WebApi.WebHostin einem anderen Projekt installiert, aber nicht in dem bestimmten Projekt, das es benötigte. Überprüfen Sie in Ihrer packages.config, ob eine Zeile wie diese vorhanden ist:

<package id="Microsoft.AspNet.WebApi.WebHost" version="5.1.1" targetFramework="net45" />

Wenn dies nicht vorhanden ist, haben Sie es nicht Microsoft.AspNet.WebApi.WebHostin Ihrem Projekt installiert. Sie können entweder mit Nuget Package Manager oder über die Package Manager-Konsole installieren. Führen Sie den folgenden Befehl aus, um die Installation über die Package Manager-Konsole durchzuführen:

Install-Package Microsoft.AspNet.WebApi.WebHost
Cameron Tinker
quelle
5

Die GlobalConfiguration.Configure-API ist in "Microsoft.AspNet.WebApi.WebHost" version = "5.2.3" verfügbar.

und nicht in "Microsoft.AspNet.WebApi.WebHost" version = "4.0.0"

user3508883
quelle
3

Wenn das Problem nach der Deinstallation und Installation von Microsoft.AspNet.WebApi.WebHost weiterhin besteht, fügen Sie in web.config Folgendes hinzu, damit die globale Konfiguration funktioniert

 <dependentAssembly>
        <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.2.0.0" />
      </dependentAssembly>
ratneshsinghparihar
quelle
Dies war bereits in meiner web.config. Immer noch Problem (VS2015)
Piotr Kula
2

"Install-Package Microsoft.AspNet.WebApi.Core" hat einwandfrei funktioniert.

Terry Mosoma
quelle
1

Mein Problem war, dass der Nuget-Paketmanager kein echtes Update durchgeführt hat, aber die Dateien Verweise auf ältere Versionen enthielten. Deshalb habe ich zuerst alle installierten MVC-bezogenen Pakete (einschließlich Razor und Web-API) entfernt, sie dann erneut installiert und die Version von aktualisiert das Rasiermesser in views / web.config auf Version 3.0.0.

Soniku
quelle
1

Keine dieser Lösungen hat bei mir funktioniert. Ich hatte ein Gewirr von Nuget-Paketen, die aufgrund zirkulärer Abhängigkeiten voneinander nicht aktualisiert werden konnten.

Ich würde das auf die altmodische Weise reparieren müssen. Ich habe ein neues MVC / web api Projekt und manuell kopiert System.Web.Httpund System.Web.Http.WebHostaus dem neuen Projekt in die Nuget Ordner der exisitng Lösung. Von dort aus habe ich die Referenzen von OMG "Browsing" aktualisiert und das Problem behoben.

Micah B.
quelle
0

Dadurch wurde dieses Problem behoben, indem der Datei Global.asax.cs ein Namespace hinzugefügt wurde.

using System.Web.Http;

Dies löste das Problem.

user1661290
quelle