2016-08-12 8 views
0

私は非常に簡単な標準のアクションを処理するODataコントローラを持っています(少なくともGET、POST、PUT、DELETEメソッドはワーキング)。私はthis tutorialに続き、簡単なバウンドアクションを追加しました。この方法は、パラメータの引数を持っているが、実際には、パラメータを必要としません。WebAPIパラメータなしのOData v4カスタムアクションは、エラーなしでルーティングすることはできません "ルーティング規則が見つかりませんでした..."

[HttpPost] 
public IHttpActionResult Close([FromODataUri] int key, ODataActionParameters parameters) { 
    return Ok(); 
} 

私は次のようODataのEDM構成でこのアクションを定義しています

builder.EntitySet<Ticket>("tickets"); 
builder.EntityType<Ticket>().Action("Close"); 

私はポストマンからのアクションを呼び出ししようとしています:

POST /odata/tickets(2)/Default.Close HTTP/1.1 
Host: localhost:50477 
Accept: application/json 
Content-Type: application/json 
Cache-Control: no-cache 
Postman-Token: eef4c1f6-8c7f-f5eb-c22d-4397f3bda170 

しかし

はエラーメッセージを受け取ります3210

私はインターネット全体と関連記事をすべて読んでいますが、この問題を解決することはできません。私はこれを戦う方法を新鮮なアイデアがないので、私を助けてください。

+0

WebAPI/ODataのバージョンは何ですか?メタデータを共有することはできますが、引き続き問題を再現することはできません。 –

+0

OData v4、WebApi 2.2。メタデータを見てください:http://pastebin.com/MuPzFPxe –

+0

コントローラに送信するJSONは何ですか? –

答えて

0

マイコントローラ:

public class TicketsController : ODataController 
{ 
    [HttpPost] 
    public IHttpActionResult Close([FromODataUri] int key, ODataActionParameters parameters) 
    { 
     return Ok(); 
    } 
} 

マイリクエスト:

 string requestUri = "http://localhost/odata/tickets(2)/Default.Close"; 

     HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, requestUri); 
     request.Content = new StringContent("", 
           Encoding.UTF8, 
           "application/json"); 
     HttpResponseMessage response = _client.SendAsync(request).Result; 

またはCloseメソッドでODataActionParameters parametersを削除して呼び出します。

 string requestUri = "http://localhost/odata/tickets(2)/Default.Close"; 

     HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, requestUri); 
     HttpResponseMessage response = _client.SendAsync(request).Result; 

マイEdmModelは、あなたのモデルを使用しています。

+0

試していただきありがとうございます...上記のものは全て同じものですが、他のものは悪影響を与えているようです。私はまだ "http:// localhost:50477/odata/tickets(2)/default.close"というリクエストURIと一致するHTTPリソースが見つかりませんでした。 "私はどこを見るか分からない。 –

関連する問題