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();
    
           
    
            }
  • 相关阅读:
    String和StringBuilder和StringBuffer
    多态
    组件
    反向代理
    基础知识
    reflection
    v-model 与 v-bind:model
    tomcat端口占用问题
    socket
    简要概括内存机制
  • 原文地址:https://www.cnblogs.com/personblog/p/12335505.html
Copyright © 2011-2022 走看看