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);
}
}
}
執行結果如圖:
相關文章
- OWIN入門初探
- .NET Core開發日誌——Middleware
- 敏捷開發入門敏捷
- OpenGL開發入門
- 敏捷開發入門教程敏捷
- 驅動開發入門
- HarmonyOS快速開發入門
- Git入門與開發Git
- 前端開發快速入門前端
- Pyhton開發入門心得
- django微信開發入門Django
- (一)TypeScript開發入門TypeScript
- 新手入門 Git 開發Git
- 【Android開發入門教程】三.Activity入門指南!Android
- 遊戲開發新手入門之DirectX入門(轉)遊戲開發
- EBS FORM PLL 開發入門ORM
- 快應用開發入門
- Chrome外掛開發入門Chrome
- openresty前端開發入門二REST前端
- Kafka Streams開發入門(1)Kafka
- Jaeger開發入門(java版)Java
- ARM開發環境入門開發環境
- Kotlin程式開發入門Kotlin
- PyQt4 開發入門QT
- iOS開發swift -- Realm入門iOSSwift
- [Vue] 外掛開發入門Vue
- Android -- NDK開發入門Android
- DSP開發入門學習
- Windows驅動開發入門Windows
- 安卓開發入門(一)開發環境搭建安卓開發環境
- Unity3D開發入門教程(二)—— Lua入門Unity3D
- Owin知識
- prometheus 簡單使用及簡單 middleware 開發Prometheus
- 遊戲開發入門(一)遊戲開發概述遊戲開發
- chrome外掛開發簡介(一)——開發入門Chrome
- Android開發入門之熟悉開發環境Android開發環境
- Eclipse開發:SWT-JFace開發入門(五)Eclipse
- 【URLOS開發入門】docker官方系統映象——Alpine入門教程Docker