给现有的MVC项目中添加WebAPI支持时需要注意的事项
1.直接右击MVC项目的controller文件夹,选择添加 WebAPI 控制器类v2.1,项目中会自动引用了system.web.http;
system.web.http.webhost;system.net.http。建议检查下项目引用里是否存在这些引用,如果没有则需要重复操作下本步骤,直到三个引用都添加。
2.在App_Start新建一个WebApiConfig类,补充以下代码(可以根据自己的需要,灵活调整下也无妨)
using System.Web.Http;
namespace WebApplication1
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API 配置和服务
// Web API 路由
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",//根据自己的项目需要,路径中补充了action
defaults: new { id = RouteParameter.Optional }
);
}
}
}
3.最最重要的环节:!!!将WebApiConfig类注册到Global.asax中,此处一定要注意代码的先后顺序,否则在调试本项目下的webapi接口时会报404错误!
namespace WebApplication1
{
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);//WebAPI路由注册必须在此处调用,如果放到了其他行,在调用api时可能会提示404!!!!!!!
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
//不要在这里写注册webapi路由的代码,否则会报404错误!!!
}
}
}
4.下面的代码是新建mvc+webApi项目时,microsoft自动生成的Global.asax类中,mvc和webapi路由注册的代码示例,供参考!!
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();//注册所有区域
GlobalConfiguration.Configure(WebApiConfig.Register);//注册webAPI路由!!!
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);//注册过滤器
RouteConfig.RegisterRoutes(RouteTable.Routes);//注册mvc路由
BundleConfig.RegisterBundles(BundleTable.Bundles);//注册Bundle绑定
}
}