asp.net mvc - register - HttpConfiguration missing assembly
web api 2.0 web config (8)
Estoy construyendo un sitio usando MVC4. Ni siquiera podría comenzar que estoy teniendo un extraño error. Este es mi código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace MyProject
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
El mensaje de error: El tipo o nombre del ensamblado ''HttpConfiguration'' no existe en el espacio de nombres ''System.Web.Http'' (¿falta una directiva using o una referencia de ensamblado?)
Tampoco reconoce el campo de solo lectura RouteParameter. Se me ocurre que puede tener algo que ver con la versión, mi System.Web dll es la versión 4.0.0.0.
Otra información adicional es que cuando escribo "using System.Web", Intellisense DOES reconoce el .Http dll
SIN EMBARGO, en el código, no reconoce ninguno de sus parámetros.
1. En el Explorador de soluciones, haga clic con el botón derecho en el nodo del proyecto y haga clic en Agregar referencia.
2.En el cuadro de diálogo Agregar referencia, seleccione la pestaña Conjuntos. Y escriba "system.web.http" en el cuadro de búsqueda en la esquina superior derecha.
3.Seleccione los componentes a los que desea hacer referencia, si ya está seleccionado, primero elimine la referencia que ** de nuevo Agregue referencia.
Reconstruye el proyecto nuevamente. Por favor, déjeme saber si funciona. Gracias.
Asegúrese de compilar para Framework 4.5 y no 4.0. Eso me solucionó el problema
Empezamos a experimentar este problema en uno de nuestros proyectos desde la semana pasada. El proyecto estaba funcionando bien hace 2 semanas y luego, de repente, comenzó a descartar esta excepción. No se realizaron cambios en los paquetes nuget para este proyecto. Incluso ver una revisión anterior de SVN no resultó en una compilación exitosa.
Fuera de la desesperación, actualizamos la solución de VS2012 a VS2013 y he aquí, ¡se construyó! Sospechamos, pero no pudimos confirmar, que una actualización de herramientas realizada en Visual Studio 2013 había afectado a esta biblioteca en Visual Studio 2012.
Puede que esto no funcione para todos, pero hay una opción para actualizar la solución, esto parece resolver el problema.
Lo solucioné El problema fue que, cuando creé el sitio, actualicé todos los paquetes a través de Nuget. Sin embargo, como no iba a utilizar Entity Framework, lo desinstalé. Para poder desinstalar ese paquete, me requirió desinstalar Microsoft.AspNet.Providers.Core 1.2 también ... y lo hice.
Este paquete faltante estropeó las cosas. Borré el proyecto y comencé todo de nuevo. También podría haber usado el comando Update-Package en PM Console y habría restaurado todos los paquetes perdidos. Sin embargo, dado que había hecho tanto lío en comparación con el pequeño trabajo (al lado del nulo) que había hecho, decidí comenzar todo de nuevo.
¡Gracias de cualquier manera!
Me encontré con este error al clonar una aplicación MVC 4.0 que anteriormente funcionó para mí. Mi problema era que el paquete Microsoft.Net.Http
NuGet no estaba restaurando correctamente. Lo resolví desde la consola NuGet:
Update-Package -reinstall Microsoft.Net.Http
Para otros que enfrentan este problema, mi solución fue diferente. En primer lugar, estaba degradando un proyecto de .NET 4.5 a .NET 4.0, pero los síntomas eran los mismos que los de arriba:
El tipo o nombre del ensamblado ''HttpConfiguration'' no existe en el espacio de nombres ''System.Web.Http'' (¿falta una directiva using o una referencia de ensamblado?)
Me tropecé con una publicación de blog que explicaba que hay un enlace entre Newtonsoft.Json
y HttpConfiguration
, HttpConfiguration
la referencia a Newtonsoft.Json
del proyecto y el archivo packages.config
luego reinstalé Newtonsoft.Json
desde la consola del administrador de paquetes:
Install-Package Newtonsoft.Json
No pude desinstalar Newtonsoft.Json
de la consola de administración de paquetes debido a otras dependencias, de ahí la necesidad de eliminar manualmente la referencia.
Aquí está el enlace al artículo: Newtonsoft.Json Hidden Dependencny en HttpConfiguration Breaks Compilation
Sin embargo, otro escenario. Acepto que esto solo está vagamente relacionado con la pregunta, ya que soy puramente API web. Sin embargo, mi búsqueda me llevó hasta aquí, así que ...
Tenía un proyecto existente en la solución que apuntaba a Framework 4.5.2.
Cuando agregué un nuevo proyecto, entró como 4.5 ya que no estaba prestando suficiente atención. HttpConfiguration debidamente desaparecido del método Web API Register.
Al cambiar el objetivo a 4.5.2 se resolvió el problema HttpConfiguration. Ten en cuenta que también causó algún otro problema con RouteParameter: ahora tenía dos definiciones, una en System.Web.Http y la otra en System.Web.UI.WebControls. Es bastante fácil, supongo.
Mi sensación es que hay más en esto ...
cuando actualizó y reinstaló todos los paquetes AspNet de Nuget, y parece que no hubo una solución adecuada, el reinicio de Visual Studio me salvó.