Как написать Middleware для измерения времени обработки запросов в Asp.net Core 2.0

Мне нужно использовать инструмент третьей части, чтобы измерить время, необходимое для обработки каждого запроса в API. Мой код будет что-то вроде ниже,

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

Мне нужно добавить этот код во все контроллеры и методы. Как я могу создать промежуточное программное обеспечение для этого? Так что мне не нужно добавлять этот код во все методы.

Здесь мой пользовательский инструмент отправит время, необходимое для обработки запроса, на движок, который мы используем для наших матриц.

1 ответ

Решение

С ASP.NET Core это может быть так же просто, как (в 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(),

Другие вопросы по тегам