OWIN Middleware開發入門
Program.cs
using Microsoft.Owin;
using Microsoft.Owin.Hosting;
using System;
namespace OWINDemo
{
class Program
{
static void Main(string[] args)
{
var baseAddress = "http://localhost:9001";
WebApp.Start<Startup>(url: baseAddress);
Console.WriteLine("exit by any key");
Console.ReadLine();
}
}
}
Startup.cs
using Owin;
using System.Web.Http;
namespace OWINDemo
{
public class Startup
{
public void Configuration(IAppBuilder appBuilder)
{
var config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name:"DefaultApi",
routeTemplate:"api/{controller}/{id}",
defaults:new {id=RouteParameter.Optional}
);
appBuilder.UseWebApi(config);
appBuilder.Use<SampleMiddleware>("[自定義可選的object引數]");
}
}
}
BlogController.cs
using System.Collections.Generic;
using System.Web.Http;
namespace OWINDemo
{
public class BlogController: ApiController
{
string[] app=new string[] { "南通", "開發區"};
public IEnumerable<string> Get()
{
return app;
}
public string Get(int id)
{
return $"owin {app[id]} by:wu";
}
public void Post([FromBody]string value)
{
app[0] = "valuePost";
}
public void Put(int id,[FromBody]string value)
{
app[id] = "Put";
}
public void Delete(int id)
{
app[id] = "null";
}
}
}
SampleMiddleware.cs
using System;
using System.Threading.Tasks;
using Microsoft.Owin;
namespace OWINDemo
{
public class SampleMiddleware:OwinMiddleware
{
private object _mOptions;
/// <summary>
/// 建構函式,第一個引數必須為 OwinMiddleware物件 ;第一個引數是固定的,後邊還可以新增自定義的其它引數
/// </summary>
/// <param name="next">下一個中介軟體</param>
public SampleMiddleware(OwinMiddleware next,object options)
: base(next)
{
_mOptions = options;
}
/// <summary>
/// 處理使用者請求的具體方法,該方法是必須的
/// </summary>
/// <param name="context">OwinContext物件</param>
/// <returns></returns>
public override Task Invoke(IOwinContext context)
{
PathString tickPath = new PathString("/tick");
//判斷Request路徑為/tick開頭
if (context.Request.Path.StartsWithSegments(tickPath))
{
string content = DateTime.Now.Ticks.ToString();
//輸出答案--當前的Tick數字
context.Response.ContentType = "text/plain";
context.Response.ContentLength = content.Length;
context.Response.StatusCode = 200;
context.Response.Expires = DateTimeOffset.Now;
context.Response.Write(content);
//解答者告訴Server解答已經完畢,後續Middleware不需要處理
return Task.FromResult(0);
}
else
//中介軟體的實現程式碼
return Next.Invoke(context);
}
}
}
執行結果如圖:
相關文章
- .NET Core開發日誌——Middleware
- 敏捷開發入門敏捷
- 【Android開發入門教程】三.Activity入門指南!Android
- Git入門與開發Git
- 敏捷開發入門教程敏捷
- Android Things 開發入門Android
- 前端開發快速入門前端
- (一)TypeScript開發入門TypeScript
- 新手入門 Git 開發Git
- HarmonyOS快速開發入門
- 驅動開發入門
- Kubernetes Operator 開發入門
- Owin知識
- prometheus 簡單使用及簡單 middleware 開發Prometheus
- openresty前端開發入門二REST前端
- EBS FORM PLL 開發入門ORM
- Kafka Streams開發入門(1)Kafka
- ARM開發環境入門開發環境
- Jaeger開發入門(java版)Java
- 快應用開發入門
- Chrome外掛開發入門Chrome
- Unity3D開發入門教程(二)—— Lua入門Unity3D
- OWIN 中文文件
- 【URLOS開發入門】docker官方系統映象——Alpine入門教程Docker
- 遊戲開發入門(一)遊戲開發概述遊戲開發
- 安卓開發入門(一)開發環境搭建安卓開發環境
- Chrome開發者工具Debug入門Chrome
- Koa2開發快速入門
- Web 前端開發之小白入門Web前端
- Babel 外掛開發入門指南Babel
- Babel外掛開發入門指南Babel
- 如何大資料開發入門大資料
- GO 語言快速開發入門Go
- Mybatis註解開發案例(入門)MyBatis
- 小程式從入門到開發
- web前端開發怎麼入門?Web前端
- Python:介面開發,wx入門篇Python
- Util應用框架快速入門(4) - 整合測試開發入門框架