1.1.2 以Web Host方式寄宿Web API

     采用Web Host方式寄宿Web API的宿主程序WebHost是一个空的ASP.NET应用,除了让它引用定义ContactsController项目的WebApi 

我们还需要引用几个必须的程序集

    System.Web.Http;

    System.Web.Http.WebHost;

    System.Net.Http;

   如果采用WebHost的方式来寄宿WebAPI,ASP.NET自身的路由系统会成为接收请求的第一道屏障,在将请求递交给ASP.NET Web API自己

的信息处理管道之前,路由系统会解析出当前请求访问的目标HttpController和Action的名称。我们需要做的就是根据需求注册相应的路由,这也是

Web Host寄宿方式所需的唯一操作

  我们在WebHost项目中添加一个Global.asax文件。并在Application_Start方法中注册一个模板为  api/{controller}/{id}.

  api   :静态文本"api"表示前缀,(可有可无)

  {controller} :路由参数 ,表示HttpController的名称

  {id}  :可以映射为目标Action的方法的同名参数(这是一个可以缺省的路由参数)

 protected void Application_Start(object sender, EventArgs e)
        {
            GlobalConfiguration.Configuration.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional });
        }

    如上所示,路由注册是通过调用代表全局路由表的HttpRouteController对象的扩张方法MapHttpRoute来完成的,

GlobalConfiguration的静态属性 Configuration返回一个代表当前配置的HttpConfiguration对象,全局路由表就注册在它的Rountes属性上。

  到此为止Web API的Web Host寄宿工作就已经完成了。我们可以利用浏览器来条用寄宿的Web API.
  在默认情况下,通过 VS(本文使用的VS2015)创建的Web应用总是使用IIS Express作为服务器,它为自动为我们指定一个可用的端口号,为了更好的模拟真实发布环境,同时避免“跨域资源共享”带来的困扰,我们采用本地IIS作为服务器。
  
    方式一

 在浏览器输入http://localhost/WebHost/api/Contacts     请求的就是我们的Get方法,返回所有的信息

 

在浏览器http://localhost/WebHost/api/Contacts/001 ,同样请求的还是Get方法,此时{id}识别为001,返回的就是这个人的信息。

 

方式二  手动在IIS发布

 在浏览器http://localhost/YRFAPIDemo/WebHost/api/Contacts/001  ,看下图,得到的结果是一样的。 

 

 在开发阶段为什么要使用IIS启动程序呢,最简单的好处就是可以直接附加到进程进行调试。

原文地址:https://www.cnblogs.com/fenger-VIP/p/6678049.html