1.通常我们有个web 让后可以有个web api 提供接口
2.通常我们分别建两个项目 web api 依赖web的来进行访问(说到底是依赖是IIS)
3.我们先建个SmallCode.Test.Web 再建一个SmallCode.Test.Api
4.直接在SmallCode.Test.Web 引用 SamllCode.Test.Api 运行通过地址 /api/Order 无法访问
5.开始配置了 在web 中用Nuget 下载Api相关的包:Microsoft.AspNet.WebApi.Core.5.2.3
在web项目中建个 WebApiConfig 配置如下:
public class WebApiConfig { public static void Register(HttpConfiguration config) { ///web api 路由 在webapi 中的System.Web.Http 中 这是WebApi对原来的System.Web.Http的扩展 config.MapHttpAttributeRoutes(); //配好路由规则 config.Routes.MapHttpRoute( name: "SmallCodeApi", routeTemplate: "api/{controller}/{id}", defaults: new { controller = "Order", id = RouteParameter.Optional } ); } }
运行web 访问api/Order 发现还是不行;原来在Global.asax.cs中需要加载这个WebApiConfig的文件
这时需要用Nuget下载Microsoft.AspNet.WebApi.WebHost.5.2.3(这个估计就是api 寄生在web上的依赖 个人理解)
在web Global.asax.cs配置如下:
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); GlobalConfiguration.Configure(WebApiConfig.Register); RouteConfig.RegisterRoutes(RouteTable.Routes); }
再来运行 api/Order
6.总结:在web中引用api项目的配置,直接引用dll后,在web项目中对WebApiConfig 进行配置。(在web项目中需要引用到一些web api 相关的包)
代码托管于:https://git.oschina.net/nele/SmallCode.Test.Web.git