zoukankan      html  css  js  c++  java
  • 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,还是就是这么设计的。

  • 相关阅读:
    HDU_5372 树状数组 (2015多校第7场1004)
    《 字典树模板_递归 》
    《神、上帝以及老天爷》
    《Crazy tea party》
    UVA_ Overflow
    UVA_If We Were a Child Again
    UVA_Product
    UVA_Integer Inquiry
    你也可以屌到爆的这样敲代码当黑客!
    大数相加_原创
  • 原文地址:https://www.cnblogs.com/dreamofei/p/4481727.html
Copyright © 2011-2022 走看看