• 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启动程序呢,最简单的好处就是可以直接附加到进程进行调试。

  • 相关阅读:
    oracle的over函数应用(转载)
    Oracle decode()函数应用
    EL表达式显示数据取整问题
    null值与空值比较
    case when语句的应用
    堆排序
    希尔排序
    插入排序
    异或运算
    选择排序
  • 原文地址:https://www.cnblogs.com/fenger-VIP/p/6678049.html
Copyright © 2020-2023  润新知