Recientemente comencé a seguir esta guía para migrar mi proyecto a .NET 4.5.1 y Web Api 2.
Lo primero que el desarrollador de MS, Rick Anderson, le pide que haga es cambiar:
WebApiConfig.Register(GlobalConfiguration.Configuration);
a
GlobalConfiguration.Configure(WebApiConfig.Register);
en el archivo global.asax. Sin embargo, esto me está dando un error cuando intento compilar:
El error 1 'System.Web.Http.GlobalConfiguration' no contiene una definición para 'Configurar'
Mi proyecto se encuentra actualmente en MVC 5 y Web Api 2 y .NET 4.5.1, pero creo que System.Web.Http todavía piensa que es la versión .NEt 4.0.
¿Cómo puedo solucionar esto?
Gracias.
Editar:
Aquí están mis enlaces de ensamblaje:
<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>
Todo se comentó después de que se comentara la parte superior porque recibía el error:
Advertencia 2 Se encontraron conflictos entre diferentes versiones del mismo ensamblado dependiente que no se pudieron resolver. Estos conflictos de referencia se enumeran en el registro de compilación cuando la verbosidad del registro se establece en detallada.
y deshacerse de las ataduras duras fue arreglar eso.
fuente
Microsoft.AspNet.Web.Helpers.Mvc
primero?Respuestas:
Necesita el system.web.http.webhost que forma parte de este paquete. Lo arreglé instalando el siguiente paquete:
o búsquelo en nuget https://www.nuget.org/packages/Microsoft.AspNet.WebApi.WebHost/5.1.0
fuente
GlobalConfiguration.Configure(WebApiConfig.Register);
cambié el orden en el que se insertó en el global.asax a la parte superior justo después de AreaRegistration, y funcionó bien.Microsoft.AspNet.WebApi.WebHost
a la última versiónNinguna de estas ideas ayudó a mi proyecto con MVC 5.2.2.
Forzar una reinstalación corrigió el problema. Desde la consola del administrador de paquetes NuGet:
update-Package -reinstall Microsoft.AspNet.WebApi.WebHost
fuente
GlobalConfiguration
La clase es parte delMicrosoft.AspNet.WebApi.WebHost
paquete Nuget ... ¿Ha actualizado este paquete a Web API 2?fuente
Además de usar la consola del administrador de paquetes para obtener un nuget para actualizar el proyecto con Install-Package Microsoft.AspNet.WebApi.WebHost por falta de GlobalConfiguration ,
Necesitaba Install-Package Microsoft.AspNet.WebApi.SelfHost por no usar System.Web.Http;
fuente
Es posible que desee verificar que su proyecto se haya
Microsoft.AspNet.WebApi.WebHost
instalado. Como resultado, en mi caso,Microsoft.AspNet.WebApi.WebHost
se instaló en otro proyecto, pero no en el proyecto particular que lo necesitaba. En su package.config, verifique que haya una línea como esta:Si eso no está presente, no lo ha
Microsoft.AspNet.WebApi.WebHost
instalado en su proyecto. Puede instalarlo usando Nuget Package Manager o mediante Package Console Console. Para instalar desde la consola de Package Manager, ejecute este comando:fuente
GlobalConfiguration.Configure API está disponible en "Microsoft.AspNet.WebApi.WebHost" version = "5.2.3"
y no en "Microsoft.AspNet.WebApi.WebHost" version = "4.0.0"
fuente
Si el problema persiste después de desinstalar e instalar Microsoft.AspNet.WebApi.WebHost, agregue también lo siguiente en web.config para que funcione la configuración global.
fuente
"Install-Package Microsoft.AspNet.WebApi.Core" funcionó bien.
fuente
Mi problema fue que el administrador de paquetes nuget no realizó una actualización real, pero los archivos contenían referencias a versiones anteriores, por lo que primero eliminé todos los paquetes relacionados con mvc instalados (incluidas la razor y la API web), luego los instalé nuevamente y actualicé la versión de la maquinilla de afeitar en views / web.config a la versión 3.0.0.
fuente
Ninguna de estas soluciones funcionó para mí. Tenía una maraña de paquetes Nuget que no podían actualizarse debido a dependencias circulares entre sí.
Me gustaría tener que arreglar esto a la antigua usanza. Creé un nuevo proyecto MVC / web api y lo copié manualmente
System.Web.Http
ySystem.Web.Http.WebHost
del nuevo proyecto a las carpetas Nuget de la solución existente. A partir de ahí, actualicé las referencias, OMG, "navegando" y solucioné el problema.fuente
esto resolvió este problema agregando espacio de nombres al archivo Global.asax.cs.
usando System.Web.Http;
Esto resolvió el problema.
fuente