Asp.Net Mvc项目添加WebApi

1、添加一个WebApi 空项目

2、删除WebApi项目下的 Global.asax 文件,因为我们要把WebApi项目整合到Mvc项目中去,全局只需要一个Global

3、修改 WebApi 项目中的 WebApiConfig.cs 文件 添加 GlobalConfiguration.Configuration.EnsureInitialized();

        public static void Register(HttpConfiguration config)
        {
            // Web API 配置和服务

            // Web API 路由
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

            GlobalConfiguration.Configuration.EnsureInitialized();
        }

4、再 WebApi 项目中添加 RouteProvider.cs 用于Global.asax 调用

    public class RouteProvider
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            var config = GlobalConfiguration.Configuration;
            WebApiConfig.Register(config);
        }
    }

5、删除 MVC 项目中 RouteConfig.cs 文件,可以先排除到项目外

6、修改 Mvc 项目  Global.asax 文件

    public class MvcApplication : System.Web.HttpApplication
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            RouteProvider.RegisterRoutes(routes);

            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }

        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            RegisterRoutes(RouteTable.Routes);

            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }

大功告成

posted @ 2017-10-26 14:32  上古时期的码农  阅读(3670)  评论(1编辑  收藏  举报