27

出于某种原因,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。这也曾经奏效,但我开始为我的 API 开发其他部分,然后才回来构建控制器,所以我不知道发生了什么。

有什么想法吗?

4

6 回答 6

20

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

于 2013-09-23T14:46:04.827 回答
19

因为这个扩展方法存在于 中System.Net.Http,你只需要将它包含在你的 usings 语句中。

using System.Net.Http;
于 2013-06-06T19:13:24.130 回答
7

您可以使用

 HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.Gone)

代替

 Request.CreateResponse(HttpStatusCode.Gone)
于 2014-08-13T04:40:42.450 回答
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.
就我而言,编译器现在得到了它。看到这里的例子

于 2014-01-19T11:11:40.687 回答
0

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

Using System.Web 

到cs文件的顶部。

于 2016-10-05T11:19:12.273 回答
-2

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

有一个解决方法: 在 vb.net Webapi Projects 中缺少 request.CreateResponse

于 2014-01-16T14:36:29.050 回答