控制台+Owin搭建WebAPI接口服务

Posted kevin_峰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了控制台+Owin搭建WebAPI接口服务相关的知识,希望对你有一定的参考价值。

  当没有iis环境、想快速启动几个api接口测试又觉得新建一个api项目麻烦?来使用控制台做宿主,快速改几个api测试吧!

 

  1.新建控制台项目

  2.安装以下相关依赖

  Microsoft.AspNet.WebApi

  Microsoft.AspNet.WebApi.Owin

  Microsoft.Owin.Hosting

  Microsoft.Owin.Host.HttpListener

  3.新建API控制器,需要注意一下几点约定

  >控制器放在文件夹Controllers下(没有新建一个)

  >控制器继承自ApiController

  >控制其名称符合“名称+Controller”规范

  比如:

  

  其它与WebAPI的写法一致即可

 

  4.新建StartUp类--根目录新建StartUp.cs

  

 1 public class Startup
 2     {
 3         public void Configuration(IAppBuilder appBuilder)
 4         {
 5             HttpConfiguration config = new HttpConfiguration();
 6 
 7             config.Routes.MapHttpRoute(name: "DefaultApi",
 8                 routeTemplate: "api/{controller}/{action}",
 9                 defaults: new { id = RouteParameter.Optional }
10             );
11 
12             //清除xml格式,使用json格式
13             config.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
14             config.Formatters.Add(new JsonMediaTypeFormatter());
15 
16             appBuilder.UseWebApi(config);
17         }
18     }

 

  5.Program中配置启动

  

           StartOptions options = new StartOptions();
            options.Urls.Add("http://localhost:9095");
            options.Urls.Add("http://127.0.0.1:9095");
            options.Urls.Add(string.Format("http://{0}:9095", Environment.MachineName));
            using (WebApp.Start<Startup>(options))
            {
                Console.WriteLine("server started...");


                Console.ReadLine();
            }

            //也可以使用
            //string baseAddress = "http://localhost:9000/";
            //using (WebApp.Start<Startup>(url: baseAddress))
            //{

            //}    

 

  6.开启测试吧~~

  7.注意部署在服务器上时,如果服务器的外网ip不是本机ip,需要使用本机ip启动api,并且云控制台开启相应端口

 

以上是关于控制台+Owin搭建WebAPI接口服务的主要内容,如果未能解决你的问题,请参考以下文章

使用OWIN 为WebAPI 宿主 跨平台

使用OWIN 为WebAPI 宿主 跨平台

OWIN WebAPI如何自动生成接口文档

OWIN WebAPI如何自动生成接口文档

使用控制台程序搭建WebApi

[翻译]自托管WebApi使用OWIN和Unity