8

ASP.NET 4 Web API を使用して RESTful POST 操作の HTTP ステータス コードを返そうとしてい201 Createdますが、常に200 OK.

現在、IIS 7.5.7600.16385、VS 2010 Professional、Windows 7 64 ビット 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;
}

データを返す前に が設定されている他の例を見HttpContext.Current.Response.StatusCodeたことがあるので、これが問題になるとは思いませんでした。MVC 4 ソースではまだ追跡していません。

(これは、この質問に関する私の調査に関連していますが、独自の質問を正当化するのに十分なトピックとは異なります)

問題が IIS なのか Web API なのかわかりません。絞り込むためにさらにテストを行います。

4

2 に答える 2

10

HttpContext.Current過去からの二日酔いです。

HttpResponseMessage<T>応答を次のように定義する必要があります。

public HttpResponseMessage<MyResource> Post(MyResource myResource)
{
    .... // set the myResource
    return new HttpResponseMessage<MyResource>(myResource)
            {
                StatusCode = HttpStatusCode.Created
            };
}

アップデート

コメントからわかるように、このアプローチはベータリリースで機能します。RCではありません。

于 2012-04-27T21:07:44.890 に答える