Pour une raison quelconque, Request.CreateResponse
est maintenant "rouge" dans VS2012 et lorsque je survole sur l'utilisation indiquée par IDE
Impossible de résoudre le symbole 'CreateResponse'
Voici la classe 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);
}
}
}
Certes, le code est compilé et fonctionne, c'est vraiment gênant de voir tout le "rouge" sur mon écran. En outre, l'intellisense ne fonctionne pas maintenant lorsque je tape Request.CreateResponse
. Cela fonctionnait aussi, mais j’ai commencé à développer d’autres composants de mon API et je suis revenu à la construction de contrôleurs, donc je ne sais pas ce qui s’est passé.
Des pensées?
Vous devez ajouter une référence à System.Net.Http.Formatting.dll
. La méthode d'extension CreateResponse
est définie ici.
Étant donné que cette méthode d'extension réside dans System.Net.Http
, il vous suffit de l'inclure dans vos instructions usings.
using System.Net.Http;
C'est parce que vous devez faire:
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);
}
}
}
Notez la this
.
Dans mon cas, le compilateur l'obtient maintenant . Vu l'exemple ici
Vous pouvez utiliser
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.Gone)
au lieu de
Request.CreateResponse(HttpStatusCode.Gone)
Ajoutez une référence à System.Web.Http
au projet. Puis ajouter
Using System.Web
en haut du fichier cs.