c# - varios - WebAPI encontró error de referencia cuando tengo el ensamblado
se encontraron varias acciones que coincidían con la solicitud get (7)
1) Compruebe en la carpeta de la solución los paquetes / Microsoft.AspNet.WebApi.Client.5.2.3 / lib / net45 tiene System.Web.Http.dll está disponible o no. Debe estar allí. Si no está disponible, cópielo de cualquier otra carpeta de paquetes de proyectos en ejecución. 2) Elimine la referencia de System.Web.Http.dll de su proyecto. 3) Agregue una nueva referencia apuntando a .dll nuevo que es a packages / Microsoft.AspNet.WebApi.Client.5.2.3 / lib / net45 / System.Web.Http.dll
Creé una aplicación MVC 4 Web API dentro de mi solución, pero ahora recibo 2 errores y necesito ayuda.
''System.Web.Http.HttpConfiguration'' no contiene una definición para ''MapHttpAttributeRoutes'' y no se puede encontrar ningún método de extensión ''MapHttpAttributeRoutes'' que acepte un primer argumento de tipo ''System.Web.Http.HttpConfiguration'' (¿falta una directiva de uso? o una referencia de montaje?)
Este error ocurre en el siguiente código
Archivo: WebApiConfig.cs (en la carpeta App_Start)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
using System.Web;
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
Otro, está en Global.asax
''System.Web.Http.GlobalConfiguration'' no contiene una definición para ''Configurar''
Archivo: Global.asax.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Http.WebHost;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
ACTUALIZAR
Después de instalar a través de Nuget, WebAPI WebHost (sugerencia de @ sa_ddam213) resuelve algunos problemas, pero ahora recibí este error cuando ejecuté mi aplicación
No se pudo cargar el archivo o ensamblado ''System.Net.Http'' o una de sus dependencias. La definición del manifiesto del ensamblaje ubicado no coincide con la referencia de ensamblaje
El archivo Web.config tiene el ensamblado
<dependentAssembly>
<assemblyIdentity name="System.Web.Http" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-5.2.0.0" newVersion="5.2.0.0"/>
</dependentAssembly>
Actualiza tus paquetes NuGet. Trabajó para mi.
Desinstalé algunos paquetes Nuget en mi proyecto, incluido el MVC, y los instalé de nuevo. Resuelto. Gracias a todos por ayudarme.
Específicamente para mí, descargué de TFS alguien en la solución de obras y obtuve el error
System.Web.Http.HttpConfiguration'' does not contain a definition for ''MapHttpAttributeRoutes'' and no extension method ''MapHttpAttributeRoutes''
Estaba a punto de continuar con la reinstalación de la API web, pero sé que la cadena de dependencia del orden en el que instalaste los elementos puede terminar con un poco de drama.
JSON es impredecible ya que a veces he visto la fuerza JSON actualizada y la desinstalación de una versión más nueva de otro paquete y la instalación de una versión anterior, ya que pensaba que "sabía mejor".
Para mí, ACTUALIZAR JSON a través de nuget era todo lo que tenía que hacer.
Intente actualizar sus paquetes ejecutando el siguiente comando en la consola nugetmanager
update-package microsoft.aspnet.webapi.webhost -reinstall
Una reinstalación forzada de WebAPI podría hacer el trabajo:
update-package microsoft.aspnet.webapi -reinstall
Yo si:
get-project <project_name> | uninstall-Package Microsoft.AspNet.WebApi.WebHost -force
Luego reinstalado (con una versión específica consistente con los de otros proyectos)
get-project <project_name> | install-Package Microsoft.AspNet.WebApi.WebHost -Version 5.2.2
Esto resolvió mi problema.