//中间件入口只能叫Invoke,且返回Task //该方法参数也可以注入,不过建议全都在构造函数中注入,Invoke方法只保留一个HttpContext参数 public async Task Invoke(HttpContext context) { _watch?.Start(); await _next.Invoke(context); //调用后面中间件 //后面中间件都调用完成后记录花费时间 await context.Response.WriteAsync($"<div class=\"alert alert-info\" rol=\"alert\">共耗时:{_watch.GetMillionSeconds()} 毫秒</div>"); }