码迷,mamicode.com
首页 > Windows程序 > 详细

Web API 之宿主

时间:2017-04-26 14:37:25      阅读:388      评论:0      收藏:0      [点我收藏+]

标签:主程序   情况   宿主程序   启动服务   builder   控制   使用   post   static   

   Asp.Net WebAPI生成的是一个程序集,并不是独立的进程,因此,要运行的时候必须将其承载在相应的宿主上,一般比较常见的是IIS承载。很多时候,我们为了简化部署或者功能集成,需要将其承载到独立的进程上,这种方式一般称之为Self-Host。
   一般有以下三种承载方式
IIS 
  这里的IIS承载为我们平时一般使用较多的情况,这里不再阐述,主要介绍下面两种方式
SelfHost
  1.   首先在Nuget上安装Microsoft.AspNet.WebApi.SelfHost库
  2.   编写自己的APIController  
 public class UserController: ApiController
    {
        [HttpPost,HttpGet]
        public string PostGetInfo()
        {
            return "API测试地址";
        }
    }

  

   
           这里的API编写位置有区分,包括写在宿主程序中,和卸载自己的单独程序集中,两种方式的将在方式不一样,下篇再进行说明
     3.启动服务编码,这里是控制台项目
        
        
        static void Main(string[] args)
        {            
            var config = new HttpSelfHostConfiguration("http://localhost:8083");
 
            config.Routes.MapHttpRoute(
                "API Default", "api/{controller}/{id}",
                new { id = RouteParameter.Optional });            
            using (var server = new HttpSelfHostServer(config))
            {
                server.OpenAsync().Wait();
                Console.WriteLine("Press Enter to quit.");
                Console.ReadLine();
            }
        }

  

        这里的示例中,保持API代码与宿主代码在统一程序集
OwinSelfHost
        1. 通过Nuget来安装 Microsoft.AspNet.WebApi.OwinSelfHost
        2. 编写自定义ApiController
            
    
    public class UserController: ApiController
    {
        [HttpPost,HttpGet]
        public string PostGetInfo()
        {
            return "API测试地址";
        }
    }

  

        3.创建宿主程序,这里采用控制台项目,编写Owin启动类        
    
 public class Startup
    {
        public void Configuration(IAppBuilder appBuilder)
        {
            HttpConfiguration config = new HttpConfiguration();
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new
                {
                    id = RouteParameter.Optional
                }
            );
            appBuilder.UseWebApi(config);
        }
    }

  

         4.在宿主程序中启动服务
       
 static void Main(string[] args)
        {            
            string baseAddress = "http://localhost:9000/";
            // 启动 OWIN host
            WebApp.Start<Startup>(url: baseAddress);
            Console.WriteLine("程序已启动,按任意键退出");
            Console.ReadLine();
        }

  

 
         

Web API 之宿主

标签:主程序   情况   宿主程序   启动服务   builder   控制   使用   post   static   

原文地址:http://www.cnblogs.com/xiangchangdong/p/6768249.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!