Web Api无法访问 404

最近需要在项目中添加一个Web Api,项目是.net mvc4项目。要想添加一个api,无论你怎么封装,无非就是在Application_Start方法中将WebApi的路由注册进去就行了。例如如下代码:

public static class WebApiConfig

    {

        public static void Register(HttpConfiguration config)

        {

            config.Routes.MapHttpRoute(

                name: "DefaultApi",

                routeTemplate: "api/{controller}/{id}",

                defaults: new { id = RouteParameter.Optional }

            );

        }

    }

将上面的Register方法在Application_Start方法中调用就相当于注册完成。可是笔者已经完成了以上工作,访问Api还是404错误,找不到。百思不得其解啊。。。

最后发现原来路由的注册顺序有关系。正常的mvc项目会注册普通Controller,action的路由信息:例如如下代码:

public static void RegisterRoutes(RouteCollection routes)

        {

            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");



            routes.MapRoute(

                name: "Default",

                url: "{controller}/{action}/{id}",

                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }

            );

        }

 该方法也会在Application_Start中调用。

关键来了::::要先调用Api对应的注册路由方法,后调用普通Controller的路由注册方法。因为笔者是后来在项目中添加的WebApi,所以就在最后注册的Api路由,可就是无法访问到。最后将它在普通路由之前注册就成功访问到了!

不知道这是.net mvc的bug,还是就是这么设计的。

你可能感兴趣的:(Web)