using Microsoft.Owin; using Owin; using System.Threading.Tasks; // 标识webapiOwin.Startup类为owin的启动类,也可写在AssemblyInfo.cs文件里 [assembly: OwinStartup(typeof(webapi.Owin.Startup))] namespace webapi.Owin { public class Startup { /// <summary> /// owin的http请求管道配置函数 /// </summary> /// <param name="app"></param> public void Configuration(IAppBuilder app) { // 有关如何配置应用程序的详细信息,请访问 https://go.microsoft.com/fwlink/?LinkID=316888 app.Run(context => { context.Response.Write("这个owin管道"); return Task.FromResult(0); }); } } }
编译后测试接口地址:http://localhost:101/api/testhtml
owin的四大结构为Host,Server,Middleware,Application。用自宿主的方式可彻底抛开iis。web
using Microsoft.Owin.Hosting; using System; namespace MyOwinSelfHost { class Program { static void Main(string[] args) { // WebApp.Start<Startup>和WebApp.Start均可以用,建议用后者,这样通用性强。OwinHost.exe就是用这种方法 // 区别为: // 如用WebApp.Start<Startup>则要引用Startup类所在的项目 // 如用WebApp.Start,则生成的控制台程序的当前目录下要有含[assembly: OwinStartup(xxx)]才能正常运行 //using (WebApp.Start<Startup>("http://localhost:12345")) using (WebApp.Start("http://localhost:12345")) { Console.ReadLine(); } } } }
运行api
参考官方文档:服务器
步骤app
public void Configuration(IAppBuilder app) { // 有关如何配置应用程序的详细信息,请访问 https://go.microsoft.com/fwlink/?LinkID=316888 app.UseWebApi(WebApiConfig.OwinWebApiConfiguration(new HttpConfiguration())); }
WebApiConfig以下,只要看OwinWebApiConfiguration方法里的就行。框架
using System.Web.Http; namespace webapi.Configs { /// <summary> /// webapi 配置类 /// </summary> public static class WebApiConfig { /// <summary> /// 作为委托提供给System.Web.Http.GlobalConfiguration.Configuration() /// 用于webapi以iis为服务器的状况 /// </summary> /// <param name="config"></param> public static void Register(HttpConfiguration config) { // Web API 配置和服务 // Web API 路由 config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } /// <summary> /// 返回webapi的httpconfiguration配置 /// 用于webapi应用于owin技术时使用 /// </summary> /// <returns></returns> public static HttpConfiguration OwinWebApiConfiguration(HttpConfiguration config) { config.MapHttpAttributeRoutes();//开启属性路由 config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); return config; } } }
运行asp.net