Aus irgendeinem Grund ist Request.CreateResponse
in VS2012 jetzt "rot" und wenn ich über die Verwendung schwebe, sagt die IDE
Symbol 'CreateResponse' kann nicht aufgelöst werden
Hier ist die ApiController-Klasse:
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);
}
}
}
Zugegeben, der Code kompiliert und funktioniert, es ist einfach ärgerlich, wenn man all die "roten" auf meinem Bildschirm sieht. Außerdem funktioniert der Intellisense jetzt nicht, wenn ich Request.CreateResponse
eingebe. Das hat auch funktioniert, aber ich fing an, andere Teile für meine API zu entwickeln und kam gerade zum Erstellen von Controllern zurück.
Irgendwelche Gedanken?
Sie müssen einen Verweis auf System.Net.Http.Formatting.dll
hinzufügen. Die Erweiterungsmethode CreateResponse
ist dort definiert.
Da diese Erweiterungsmethode in System.Net.Http
lebt, müssen Sie sie nur in Ihre usings-Anweisungen aufnehmen.
using System.Net.Http;
Dies liegt daran, dass Sie Folgendes tun müssen:
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);
}
}
}
Beachten Sie die this
.
In meinem Fall bekommt der Compiler es jetzt . Sah das Beispiel hier
Sie können verwenden
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.Gone)
anstatt
Request.CreateResponse(HttpStatusCode.Gone)
Fügen Sie dem Projekt einen Verweis auf System.Web.Http
hinzu. Dann füge hinzu
Using System.Web
an der Spitze der cs-Datei.