1

AttributeRoutingWebAPI プロジェクトに追加しようとしています。

1 つのコントローラーで、現在 3 つの GET メソッドが定義されています。

[GET("dictionaries")]
public IEnumerable<Dictionary> Get()

[GET("dictionaries/{id}")]
public Dictionary GetByID(int id)

[GET("dictionaries/{dictionaryID}/{page}")]
public Dictionary Browse(long dictionaryID, int page)

最初の 2 つのルートは期待どおりに機能していますが、3 番目のルートは常に405 METHOD NOT ALLOWEDを返します。

URL のパラメーターとクエリ文字列を送信しようとしましたが、どちらも同じ応答です。クエリ文字列バージョンを試したとき、ルートを次のように変更しました

[GET("dictionaries?dictionaryID={dictionaryID}&page={page}

dictionariesまた、他の 2 つの GET ルートとのあいまいさを避けるために、最初の単語をtoに変更しようとしましdictionaryたが、まだ成功していません。

AttributeRoutingのドキュメントでは、パラメーターの制約 (WebHost フレームワークのために利用できない) に関連するクエリ文字列についてのみ言及しており、ルーティングでクエリ文字列を使用する方法については言及していません。

これらの 2 つのパラメーターを使用してこの 3 番目のルートを達成する方法を誰か教えてもらえますか、または AttributeRouting を削除するか、独自のコントローラーを試す必要がありますか?

4

1 に答える 1

1

Web API アクション セレクターは、GET、POST、PUT などの動詞で始まらないため、ここでの 3 番目のアクションが POST であると暗黙的に認識します。HttpGet属性も追加してみて、これが機能するかどうかを確認してください。

[HttpGet, GET("dictionaries/{dictionaryID}/{page}")]  
public Dictionary Browse(long dictionaryID, int page)
于 2013-06-11T16:36:43.793 に答える