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); } }
大功告成