Tôi đang cố trả lại Mã trạng thái HTTP 201 Created
cho hoạt động RESTful POST bằng ASP.NET Web API, nhưng Tôi luôn nhận được 200 OK
.Không thể lấy API ASP.NET 4 Web để trả lại Mã trạng thái "201 - Đã tạo" cho POST thành công
Tôi hiện đang gỡ lỗi trên 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;
}
Tôi đã xem các ví dụ khác trong đó HttpContext.Current.Response.StatusCode
được đặt trước khi trả về dữ liệu, vì vậy tôi không nghĩ đây có thể là vấn đề. Tôi chưa theo dõi nó trong nguồn MVC 4.
(Điều này có liên quan đến cuộc điều tra của tôi với this question nhưng khác nhau đủ để đảm bảo chủ đề câu hỏi riêng của mình)
Tôi không chắc chắn cho dù vấn đề là IIS hoặc API Web. Tôi sẽ làm thêm các xét nghiệm để thu hẹp nó.
Cảm ơn! Điều đó đã làm điều đó. Tôi thực sự chỉ trả lại HttpResponseMessage để tôi có thể trả về loại nội dung khác nhau nếu cần thiết, nhưng ngay lập tức HttpResponseMessage khi cần, cũng sẽ xử lý câu hỏi liên quan của tôi http://stackoverflow.com/questions/10336733/different-return-types -for-asp-net-mvc-4-web-api. –
MikeJansen
@MikeJansen Đừng quá quen với HttpResponseMessage của T vì nó sẽ biến mất trong các bản dựng sau này. Xem http://aspnetwebstack.codeplex.com/discussions/350492 –
@DarrelMiller - cảm ơn, tôi đã chuyển đổi thành HttpRequestMessage.CreateResponse()! Không thể sử dụng –
MikeJansen