2

我正在尝试 WebAPI,到目前为止,我印象深刻,但在路由方面遇到了麻烦。我有这条可行的路线:

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

但是,我想要一个“其他”控制器(如果找不到控制器,请使用这个),我当前的(非工作)路径是:

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也将使用此路由,而不是第二个。

这里的经验法则是首先定义最具体的路线,最后定义最一般的路线 - 您也可以阅读此答案以获取更多详细信息。

于 2012-10-12T07:24:18.527 回答