如何编写中间件来测量 asp.net 核心 2.0 中的请求处理时间

how to write Middleware to measure request processing time in asp.net core 2.0

我需要使用第三方工具来测量 API 中处理每个请求所花费的时间。我的代码将如下所示,

 [HttpGet("{id}")]
 public string Get(int id)
 {
    using (SomeTool.Start.Measuring)
    {
       //Do the process
       return "somevalue";
    }
 }

我需要在所有控制器和方法中添加这段代码。 我怎样才能创建一个中间件来做到这一点?这样我就不需要在所有方法中添加这段代码了。

在这里,我的自定义工具会将处理请求所花费的时间发送到我们用于矩阵的引擎。

有了 ASP.NET 核心,它可以像(在 Startup.Configure() 中)一样简单:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    //  ...

    app.Use(async (context, next) =>
    {
        using (SomeTool.Start.Measuring)
        {
            await next.Invoke();
        }
    });

    app.UseMvc();
}

此处的顺序或添加的中间件很重要,请确保在 app.UseMvc() 之前进行调用。