0

私のASP.NETWebAPIプロジェクトでは、次のルーティングが定義されていますGlobal.asax

routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "{controller}/{action}"
            );

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}"
            );

UserFeedController次のシグネチャを持つアクションで呼び出されたコントローラーがあります。

public UserFeedResponseViewModel GetUserFeed(int id)

URLを入力するとhttp://api.mydomain.com/UserFeed/GetUserFeed/4、404が表示されます。2番目のルーティングルールが適用されないのはなぜですか。

MVCルーティングは、私の理解力をはるかに超えています。

4

1 に答える 1

2

2つのルートは基本的に同じです。MVCは一致する最初のルートを見つけ、コントローラーとアクションを指定したので、それはあなたが行ってもいいと思います。指定したIDは無視されます(パラメーターとして渡そうとする可能性があると思います)。

最初にAPI/を含めるように最初のルートを次のように変更することをお勧めします。

routes.MapHttpRoute( 
            name: "DefaultApi", 
            routeTemplate: "API/{controller}/{action}" 
        ); 

        routes.MapHttpRoute( 
            name: "Default", 
            url: "{controller}/{action}/{id}" 
        ); 

それはあなたのルートが正しく機能することを保証します。

于 2012-05-02T12:43:30.543 に答える