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;
Este es un problema conocido con VB.NET y Request.CreateResponse.
Hay una solución alternativa: solicitud faltante. Crear respuesta en vb.net Proyectos Webapi
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)