2

Web API 2 プロジェクトを作成し、次の手順に従って OData4 コントローラーを構成しました: Web API 2 Odata 4 チュートリアル

ただし、Postman を使用して単純な POST (エンティティを作成するための JSON 本文を使用) を実行しようとすると、次のエラーが返されます。

要求されたリソースは、http メソッド 'POST' をサポートしていません。

コントローラーの POST アクションは次のようになります。

public async Task<IHttpActionResult> Post(Product product)
    {
        if(!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }
        db.Products.Add(product);
        await db.SaveChangesAsync();
        return Created(product);
    }

リクエスト本文に投稿している JSON は次のとおりです。

{  
"Id":"lewisblack",
"Name":"Lewis",
"Price":"Black",
"Category":"Category 1"
}

また、リクエストに次のヘッダーも含めました。

OData バージョン: 4.0

OData-MaxVersion: 4.0

コンテンツ タイプ: アプリケーション/json

ここで何か不足していますか?

更新: 問題を解決しました。間違った URI を使用していました。

4

2 に答える 2

1

続ける情報はあまりありません:

関連するコントローラーに PostMethod がないと思われます。

それ以外の場合は、次のことを考慮してください。

  • OData は大文字と小文字を区別します
  • 必要なプロパティがありません
  • データ型が間違っています (サンプル プロジェクトの Id は整数です。プロジェクトでは文字列のように見えます。Price は文字列ではなく 10 進数にする必要があります。...)

オブジェクトを投稿したときの HTTP 応答コード (上記が役に立たなかった場合)。(フィドラーのようなツールを使用してください)。ヒント: http 応答が「不正な要求」である場合、アクションを続行するにはデータが無効である可能性があります。

于 2015-10-19T23:58:22.523 に答える
0

POST にhttps://localhost :/Productsではなく、間違ってhttp://localhost :/ を使用しました

于 2015-10-20T01:46:49.553 に答える