web-dev-qa-db-fra.com

Web Api Request.CreateResponse HttpResponseMessage no intellisense VS2012

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?

24
crizzwald

Vous devez ajouter une référence à System.Net.Http.Formatting.dll. La méthode d'extension CreateResponse est définie ici.

18
Rafael Romão

É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;
17
scidec

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

6
Jappie Kerk

Vous pouvez utiliser 

 HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.Gone)

au lieu de 

 Request.CreateResponse(HttpStatusCode.Gone)
4
Diwakar Sharma

Ajoutez une référence à System.Web.Http au projet. Puis ajouter 

Using System.Web 

en haut du fichier cs.

0
mmcc