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