2019-12-11 14:14:57 +08:00
|
|
|
ASP.NET CORE中间件相关扩展。
|
|
|
|
|
2019-12-11 17:15:09 +08:00
|
|
|
安装 https://www.nuget.org/packages/Falcon.Middleware/
|
|
|
|
|
2019-12-11 14:14:57 +08:00
|
|
|
中间件基类`MiddlewareBase`
|
|
|
|
|
|
|
|
可以自行继承并实现自己的中间件类。例如:
|
|
|
|
```
|
|
|
|
/// <summary>
|
|
|
|
/// 测试中间件
|
|
|
|
/// </summary>
|
|
|
|
public class MiddlewareTest:MiddlewareBase
|
|
|
|
{
|
|
|
|
public MiddlewareTest(RequestDelegate next) : base(next) {
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 在调用next之后执行
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="context">请求上下文</param>
|
|
|
|
public async override void InvokeNextAfter(HttpContext context) {
|
|
|
|
await context.Response.WriteAsync("\nInvokeNextAfter");
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
|
|
/// 在调用next之前执行
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="context">请求上下文</param>
|
|
|
|
public async override void InvokeNextBefore(HttpContext context) {
|
|
|
|
await context.Response.WriteAsync("InvokeNextBefore\n");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
```
|
|
|
|
然后修改setup.cs
|
|
|
|
```
|
|
|
|
public void Configure(IApplicationBuilder app,IWebHostEnvironment env) {
|
|
|
|
if(env.IsDevelopment()) {
|
|
|
|
app.UseDeveloperExceptionPage();
|
|
|
|
}
|
|
|
|
|
|
|
|
app.UseRouting();
|
|
|
|
|
|
|
|
app.UseMiddleware<MiddlewareTest>();
|
|
|
|
|
|
|
|
app.UseEndpoints(endpoints => {
|
|
|
|
endpoints.MapGet("/",async context => {
|
|
|
|
await context.Response.WriteAsync("Hello World!");
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
```
|
|
|
|
浏览器发送请求后:
|
|
|
|
```
|
|
|
|
InvokeNextBefore
|
|
|
|
Hello World!
|
|
|
|
InvokeNextAfter
|
|
|
|
```
|