public class MyMiddleware { //private IConfiguration _configuration; //第一步: private RequestDelegate _next;// using Microsoft.AspNetCore.Http; //加一個構造方法.構造方法第一個參數必須是RequestDelegate類型,表示爲中間件類型,便是表示爲下一個中間件。定義中間件時必須包含對下一個中間件的引用。 public MyMiddleware(RequestDelegate next) { _next = next;//經過私有字段去接收下一個中間件的引用,由於咱們在其餘地方須要用這個下一個中間件next。這步是關鍵,必須的有,這個實現把中間件串聯起來 //_configuration = configuration; } //第二步增長Task InvokeAsync(HttpContext context)方法,方法名稱固定爲InvokeAsync,返回值爲Task public async Task InvokeAsync(HttpContext context) { await context.Response.WriteAsync("test"); await _next.Invoke(context); } }
接下來在StartUp.cs文件的Configure方法中注入啓用中間件。使用UseMiddleware方法註冊:
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseMiddleware<MyMiddleware>();//啓用中間件 app.UseCookiePolicy(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); }