Próbuję zwrócić kod stanu HTTP o numerze 201 Created
dla operacji RESTful POST przy użyciu interfejsu API ASP.NET 4, ale Zawsze otrzymuję numer 200 OK
.Nie można pobrać interfejsu API ASP.NET 4 w celu zwrócenia kodu stanu "201 - Utworzono" dla pomyślnego wykonania testu POST
Aktualnie debuguję IIS 7.5.7600.16385, VS 2010 Professional, Windows 7 64-bit Professional.
public MyResource Post(MyResource myResource)
{
MyResource createdResource;
...
HttpResponse response = HttpContext.Current.Response;
response.ClearHeaders(); // added this later, no luck
response.ClearContent(); // added this later, no luck
response.StatusCode = (int)HttpStatusCode.Created;
SetCrossOriginHeaders(response);
return createdResource;
}
Widziałem inne przykłady gdzie HttpContext.Current.Response.StatusCode
jest ustawiona przed powrotem dane, więc nie sądzę, że będzie to problem. Nie znalazłem go jeszcze w źródle MVC 4.
(Wiąże się to z moich badań z this question ale wystarczająco innym temacie, aby uzasadnić swoje własne pytanie)
Nie jestem pewien, czy problem jest IIS lub Web API. Zrobię dalsze testy, aby je zawęzić.
Dzięki! Tak było. Właśnie zwracam komunikat HttpResponseMessage, aby w razie potrzeby móc zwrócić inny typ zawartości, ale w razie potrzeby utworzyć instancję HttpResponseMessage, która również zajmuje się moim pokrewnym pytaniem http://stackoverflow.com/questions/10336733/different-return-types -for-asp-net-mvc-4-web-api. –
MikeJansen
@MikeJansen Nie przyzwyczajaj się zbytnio do HttpResponseMessage z T, ponieważ znika w przyszłych kompilacjach. Zobacz http://aspnetwebstack.codeplex.com/discussions/350492 –
@DarrelMiller - dziękuję, przekonwertowałem na HttpRequestMessage.CreateResponse()! –
MikeJansen