zoukankan      html  css  js  c++  java
  • .netcore2.1 记录http请求时间

    • 定义一个中间件类 来计算http请求的时间
    public class ResponseTimeMiddleware
    {
      // Name of the Response Header, Custom Headers starts with "X-" 
      private const string RESPONSE_HEADER_RESPONSE_TIME = "X-Response-Time-ms";
      // Handle to the next Middleware in the pipeline 
      private readonly RequestDelegate _next;
      public ResponseTimeMiddleware(RequestDelegate next)
      {
        _next = next;
      }
      public Task InvokeAsync(HttpContext context)
      {
        // Start the Timer using Stopwatch 
        var watch = new Stopwatch();
        watch.Start();
        context.Response.OnStarting(() => {
          // Stop the timer information and calculate the time  
          watch.Stop();
          var responseTimeForCompleteRequest = watch.ElapsedMilliseconds;
          // Add the Response time information in the Response headers.  
          context.Response.Headers[RESPONSE_HEADER_RESPONSE_TIME] = responseTimeForCompleteRequest.ToString();
          return Task.CompletedTask;
        });
        // Call the next delegate/middleware in the pipeline  
        return this._next(context);
      }
    }
    • 定义中间件扩展类MyMiddlewareExtensions
    using Microsoft.AspNetCore.Builder;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    
    namespace MyApi.Middleware
    {
        public static class MyMiddlewareExtensions
        {
            public static IApplicationBuilder UseMyMiddleware(this IApplicationBuilder builder)
            {
                return builder.UseMiddleware<ResponseTimeMiddleware>();
            }
        }
    }
    •  在Startup中的Configure方法中,注册中间件
         public void Configure(IApplicationBuilder app, IHostingEnvironment env,
                Microsoft.AspNetCore.Hosting.IApplicationLifetime lifetime)
            {
            
                //跨域设置
                app.UseCors(builder => builder
                    .AllowAnyOrigin()
                    .AllowAnyMethod()
                    .AllowAnyHeader()
                    .AllowCredentials());
                app.UseHttpsRedirection();
    
                app.UseMyMiddleware();//注册中间件
    
                app.UseMvc();
    
           
    
            }
  • 相关阅读:
    【C#进阶系列】29 混合线程同步构造
    【C#进阶系列】28 基元线程同步构造
    【C#进阶系列】27 I/O限制的异步操作
    【C#进阶系列】26 计算限制的异步操作
    快速幂算法
    纪中……结束了……
    洛谷P4526 【模板】自适应辛普森法2
    洛谷P4525 【模板】自适应辛普森法1与2
    洛谷P1056 排座椅
    纪中23日c组T2 2159. 【2017.7.11普及】max 洛谷P1249 最大乘积
  • 原文地址:https://www.cnblogs.com/personblog/p/12335505.html
Copyright © 2011-2022 走看看