出于某种原因,Request.CreateResponse
现在在VS2012中显示为“红色”,当我将鼠标悬停在使用状态时,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开发其他部件,然后回到构建控制器,所以我不知道发生了什么。
有什么想法吗?
答案 0 :(得分:19)
您需要添加对System.Net.Http.Formatting.dll
的引用。 CreateResponse
扩展方法在那里定义。
答案 1 :(得分:17)
由于此扩展方法位于System.Net.Http
,因此您只需将其包含在您的usings语句中。
using System.Net.Http;
答案 2 :(得分:6)
这是因为你必须这样做:
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
在我的情况下,编译器现在得到它。
看到示例here
答案 3 :(得分:4)
您可以使用
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.Gone)
而不是
Request.CreateResponse(HttpStatusCode.Gone)
答案 4 :(得分:0)
向项目添加对System.Web.Http
的引用。然后添加
Using System.Web
到cs文件的顶部。
答案 5 :(得分:-3)
这是VB.NET和Request.CreateResponse的已知问题。
有一种解决方法: Missing request.CreateResponse in vb.net Webapi Projects