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