Web API 之宿主
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web API 之宿主相关的知识,希望对你有一定的参考价值。
Asp.Net WebAPI生成的是一个程序集,并不是独立的进程,因此,要运行的时候必须将其承载在相应的宿主上,一般比较常见的是IIS承载。很多时候,我们为了简化部署或者功能集成,需要将其承载到独立的进程上,这种方式一般称之为Self-Host。
一般有以下三种承载方式
IIS
这里的IIS承载为我们平时一般使用较多的情况,这里不再阐述,主要介绍下面两种方式
SelfHost
- 首先在Nuget上安装Microsoft.AspNet.WebApi.SelfHost库
- 编写自己的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 之宿主的主要内容,如果未能解决你的问题,请参考以下文章
Web API 之SelfHost与OwinSelfHots加载外部程序
[Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作
如何使用 Web API 来对 MVC 应用程序进行身份验证