2

私は WebAPI を試していますが、これまでのところルーティングに苦労しています。私は動作するこのルートを持っています:

routes.MapHttpRoute(
            name: "ActionApi",
            routeTemplate: "api/{controller}/{action}/{query}",
            defaults: new { query = RouteParameter.Optional });

ただし、「else」コントローラーが必要です(コントローラーが見つからない場合は、これを使用します)、現在の(機能していない)パスは次のとおりです。

routes.MapHttpRoute(
            name: "ElseApi",
            routeTemplate: "api/g/{identifier}",
            defaults: new {
                controller = "Else",
                action = "Generalise",
                identifier = RouteParameter.Optional});

私の ElseController で次のメソッドを使用します。

public string Generalise(string identifier)
        {
            return "gen";
        }

問題は何でしょうか?404エラーが発生し続けます...

4

1 に答える 1

3

適切な順序でルートを追加することを覚えておいてください。

ルーティング メカニズムは、一致する最初のルートを使用するため、"api/{controller}/{action}/{query}"ルートが最初に定義されている場合、次のような呼び出しapi/g/1もこのルートを使用し、2 番目のルートは使用しません。

ここでの経験則は、最も具体的なルートを最初に定義し、最も一般的なルートを最後に定義することです。詳細については、この回答を読むこともできます。

于 2012-10-12T07:24:18.527 に答える