c# asp.net-web-api asp.net-mvc-5 asp.net-4.5

c# - GlobalConfiguration.Configure() no aparece después de la migración de Web API 2 y.NET 4.5.1



asp.net-web-api asp.net-mvc-5 (10)

"Install-Package Microsoft.AspNet.WebApi.Core" funcionó bien.

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

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 cree que es la versión .NEt 4.0.

¿Cómo puedo arreglar 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 comentó la parte superior porque recibía el error:

Advertencia 2 Se encontraron conflictos entre diferentes versiones del mismo ensamblaje 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 detalle.

y deshacerse de las ataduras duras estaba arreglando eso.


Además de usar la consola del administrador de paquetes para obtener nuget para actualizar el proyecto con Install-Package Microsoft.AspNet.WebApi.WebHost por falta de GlobalConfiguration ,

Necesitaba Install-Package Microsoft.AspNet.WebApi.SelfHost para desaparecer usando System.Web.Http;


Es posible que desee comprobar que su proyecto tiene instalado Microsoft.AspNet.WebApi.WebHost . Resulta que, en mi caso, Microsoft.AspNet.WebApi.WebHost se instaló en otro proyecto, pero no en el proyecto en particular que lo necesitaba. En su packages.config, verifique que una línea como esta esté allí:

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

Si eso no está presente, no tiene instalado Microsoft.AspNet.WebApi.WebHost en su proyecto. Puede instalar utilizando Nuget Package Manager o a través de Package Manager Console. Para instalar desde la consola de Package Manager, ejecute este comando:

Install-Package Microsoft.AspNet.WebApi.WebHost


GlobalConfiguration.Configure API está disponible en "Microsoft.AspNet.WebApi.WebHost" versión = "5.2.3"

y no en "Microsoft.AspNet.WebApi.WebHost" version = "4.0.0"


Mi problema era que el administrador del paquete nuget no realizó una actualización real, pero los archivos contenían referencias a versiones anteriores, así que primero eliminé todos los paquetes relacionados con mvc (incluyendo afeitadora y API web) y luego los instalé de nuevo y actualicé la versión de la afeitadora en views / web.config a la versión 3.0.0.



Ninguna de estas ideas ayudó a mi proyecto utilizando MVC 5.2.2.

  • System.web.Http 5.2.2 ya estaba instalado
  • Eliminar la carpeta Paquetes y volver a descargar por completo todas las bibliotecas NuGet no hizo nada
  • Web.config ya tenía una entrada dependiente de AssemblySystem.Web.Http

Forzar una reinstalación corrigió el problema. Desde la consola del administrador de paquetes NuGet:

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


Ninguna de estas soluciones funcionó para mí. Tenía un enredo de paquetes de Nuget que no podían actualizarse debido a las dependencias circulares entre ellos.

Tendría que arreglar esto a la antigua usanza. Creé un nuevo proyecto MVC / web api y copié manualmente System.Web.Http y System.Web.Http.WebHost del nuevo proyecto en las carpetas de Nuget de la solución existente. A partir de ahí, actualicé las referencias mediante, OMG, "navegación" y solucioné el problema.


Si el problema persiste después de desinstalar e instalar Microsoft.AspNet.WebApi.WebHost, también agregue los siguientes en web.config para que la configuración global funcione

<dependentAssembly> <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.2.0.0" /> </dependentAssembly>


GlobalConfiguration clase GlobalConfiguration es parte del paquete de Microsoft.AspNet.WebApi.WebHost nuget ... ¿Ha actualizado este paquete a Web API 2?