0

アイテムが正常に挿入された場合、Web API ポスト メソッドでロケーション ヘッダーを設定しようとしていますが、mvc コントローラーからその API アクションを呼び出そうとすると、Url.Link でパラメーター 'request という例外が発生します。 ' 不足している。リクエストを必要とせずに URL を生成する方法はありますか?

これがWeb APIの郵便番号です -

public HttpResponseMessage Post (Product product)
{
    ...
    if (addedSuccessfully)
    {
        var response = new HttpResponseMessage {StatusCode = HttpStatusCode.Created};
        var uri = Url.Link("DefaultApi", new {id = product.ProductId});
        if (uri != null)
            response.Headers.Location = new Uri(uri);
        return response;
    }
    return new HttpResponseMessage {StatusCode = HttpStatusCode.Conflict};
}

これが私がそれを呼んでいる方法です

_productController.Post(product);
4

1 に答える 1

1

理想的には、単体テストを行う場合を除き、Web API コントローラーを作成してアクションの呼び出しを開始しないでください。コントローラーには、内部で作成されるときに Web API システムによって初期化されるコンテキストがあります。

Web API から返される HttpResponseMessage で行っていることのようにシナリオを説明できれば、それを解決するための代替案を提示できるかもしれません。

于 2013-02-07T19:17:24.203 に答える