Web Api Request.CreateResponse HttpResponseMessage no intellisense VS2012

出于某种原因,在VS2012中, Request.CreateResponse现在是“红色”,当我将鼠标hover在IDE的使用状态时

无法解析符号’CreateResponse’

这是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); } } } 

当然,代码确实可以编译和工作,只是看到屏幕上的所有“红色”真的很烦人。 此外,当我键入Request.CreateResponse时,intellisense现在不起作用。 这也用于工作,但我开始为我的API开发其他部件,然后回到构建控制器,所以我不知道发生了什么。

有什么想法吗?

您需要添加对System.Net.Http.Formatting.dll的引用。 那里定义了CreateResponse扩展方法。

因为此扩展方法存在于System.Net.Http ,所以您只需将其包含在usings语句中即可。

 using System.Net.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 this.Request.CreateResponse(HttpStatusCode.NotFound, "Invalid ID"); } return this.Request.CreateResponse(HttpStatusCode.OK, course); } } } 

注意this
在我的情况下,编译器现在得到它。 看到这里的例子

您可以使用

  HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.Gone) 

代替

  Request.CreateResponse(HttpStatusCode.Gone) 

System.Web.Http的引用添加到项目中。 然后加

 Using System.Web 

到cs文件的顶部。

这是VB.NET和Request.CreateResponse的已知问题。

有一种解决方法: 在vb.net Webapi项目中缺少request.CreateResponse