3

新しいコントローラー アクション メソッドに取り組んでいるのですが、なぜ 405 が表示されるのか少し混乱しています。

API で既にいくつかの GET 属性付きメソッドを定義しており、それらはすべて期待どおりに機能します。例として、これはうまくいきます:

    [GET("entries/{page}"), JsonExceptionFilter]
    public HttpResponseMessage GetEntries(int page)

それでも、私の新しいメソッドは次のように定義されています。

    [GET("search/{searchTerm}/{page}"), JsonExceptionFilter]
    public HttpResponseMessage Search(string searchTerm, int page)

405を返しています

API で routes.axd の URL にアクセスすると、テーブルに次のようなエントリが表示されます。

GET, HEAD, OPTIONS  users/search/{searchTerm}/{page}

これはすべて正しいように見えます。クライアント側では、HttpClient を使用して両方のリクエストで同じアプローチを使用しています。

var response = httpClient.GetAsync(ApiRootUrl + "users/search/" + searchTerm + "/" + page).Result;

Fiddler から get を実行しても、405 が返されます。

応答の RequestMessage を見ても正しいように見えます。

"{Method: GET, RequestUri: 'http://localhost:51258/users/search/jam/0'"

これには完全に困惑しました。

何がうまくいかないのかを明らかにするために、他に何を試みることができますか?

4

1 に答える 1

5

と呼ばれるもう 1 つの属性で検索アクションを装飾する必要がありますSystem.Web.Http.HttpGetAttribute。この背後にある理由については、以下の投稿で私の回答をご覧ください。

HttpPutAttribute も含めない限り、AttributeRouting.PUTAttribute を使用する場合は 405

于 2013-06-21T13:02:36.093 に答える