not net httpresponsemessage found createresponse c# asp.net-mvc-4 visual-studio-2012 asp.net-web-api

c# - net - Web Api Request.CreateResponse HttpResponseMessage no intellisense VS2012



httpresponsemessage web api c# (6)

Por alguna razón, Request.CreateResponse ahora es "rojo" en VS2012 y cuando controlo el uso, dice IDE

No se puede resolver el símbolo ''CreateResponse''

Aquí está la clase ApiController:

using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; using System.Web.Http.Filters; using GOCApi.Attributes; using GOCApi.Models; using GOCApi.Models.Abstract; using AttributeRouting; using AttributeRouting.Web.Http; namespace GOCApi.Controllers { [RoutePrefix("Courses")] public class CoursesController : ApiController { private ICoursesRepository _coursesRepository { get; set; } public CoursesController(ICoursesRepository coursesRepository) { _coursesRepository = coursesRepository; } [GET("{id}")] public HttpResponseMessage Get(int id) { var course = _coursesRepository.GetSingle(id); if (course == null) return Request.CreateResponse(HttpStatusCode.NotFound, "Invalid ID"); return Request.CreateResponse(HttpStatusCode.OK, course); } } }

De acuerdo, el código se compila y funciona, es realmente molesto ver todo el "rojo" en mi pantalla. Además, el intellisense no funciona ahora cuando Request.CreateResponse . Esto también solía funcionar, pero comencé a desarrollar otras partes de mi API y solo volví a los controladores de construcción, así que no sé qué pasó.

¿Alguna idea?


Agregue una referencia a System.Web.Http al proyecto. Luego añade

Using System.Web

a la cima del archivo cs.


Debe agregar una referencia a System.Net.Http.Formatting.dll . El CreateResponse extensión CreateResponse se define allí.


Debido a que este método de extensión vive en System.Net.Http , solo necesita incluirlo en sus instrucciones de uso.

using System.Net.Http;



Esto se debe a que tienes que hacer:

namespace GOCApi.Controllers { [RoutePrefix("Courses")] public class CoursesController : ApiController { private ICoursesRepository _coursesRepository { get; set; } public CoursesController(ICoursesRepository coursesRepository) { _coursesRepository = coursesRepository; } [GET("{id}")] public HttpResponseMessage Get(int id) { var course = _coursesRepository.GetSingle(id); if (course == null){ return this.Request.CreateResponse(HttpStatusCode.NotFound, "Invalid ID"); } return this.Request.CreateResponse(HttpStatusCode.OK, course); } } }

Tenga en cuenta this .
En mi caso, el compilador ahora lo entiende. Vimos el ejemplo here


Puedes usar

HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.Gone)

en lugar de

Request.CreateResponse(HttpStatusCode.Gone)