ASP.NET Core中间件计算Http请求时间示例详解

 更新时间:2019年06月23日 11:34:18   作者:Rohmeng   我要评论

这篇文章主要给大家介绍了关于ASP.NET Core中间件计算Http请求时间的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用ASP.NET Core具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

ASP.NET Core通过RequestDelegate这个委托类型来定义中间件

public delegate Task RequestDelegate(HttpContext context);

可将一个单独的请求委托并行指定为匿名方法(称为并行中间件),或在类中对其进行定义。可通过Use,或在Middleware类中配置要传递给委托执行的方法(参数类型HttpContext,返回值类型Task)。

public static IApplicationBuilder Use(this IApplicationBuilder app, Func<HttpContext, Func<Task>, Task> middleware);

public static IApplicationBuilder UseMiddleware<TMiddleware>(this IApplicationBuilder app, params object[] args);

通过定义一个中间件类 来计算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);
  }
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

相关文章

  • ASP.NET中实现把form表单元素转为实体对象或集合

    ASP.NET中实现把form表单元素转为实体对象或集合

    这篇文章主要介绍了ASP.NET中实现把form表单元素转为实体对象或集合,本文又是一个对重复数据处理的一个封装,非常实用的开发技巧,需要的朋友可以参考下
    2015-06-06
  • ASP.NET MVC数组模型绑定详解

    ASP.NET MVC数组模型绑定详解

    这篇文章主要为大家详细介绍了ASP.NET MVC数组模型绑定的相关资料,?#34892;?#36259;的小伙伴们可以参?#23478;?#19979;
    2016-04-04
  • C# 中使用iTextSharp组件创建PDF的简单方法

    C# 中使用iTextSharp组件创建PDF的简单方法

    C# 中使用iTextSharp组件创建PDF的简单方法,需要的朋友可以参?#23478;?#19979;
    2013-03-03
  • ASP.NET Core应用错误处理之StatusCodePagesMiddleware中间件针对响应码呈?#25191;?#35823;页面

    ASP.NET Core应用错误处理之StatusCodePagesMiddleware中间件针对

    这篇文章主要给大家介绍了关于ASP.NET Core应用错误处理之StatusCodePagesMiddleware中间件针对响应码呈?#25191;?#35823;页面的相关资料,需要的朋友可以参考下
    2019-01-01
  • 微信公众号支付(MVC版本)

    微信公众号支付(MVC版本)

    这篇文章主要为大家详细介绍了微信公众号支付,提供MVC版本,?#34892;?#36259;的小伙伴们可以参?#23478;?#19979;
    2016-08-08
  • .NET的动态编译与WS服务调用详解

    .NET的动态编译与WS服务调用详解

    这篇文章介绍了.NET的动态编译与WS服务调用详解,有需要的朋友可以参?#23478;?#19979;,希望对你有所帮助
    2013-07-07
  • 最新评论

    常用在线小工具

    时时彩包赢公式0369
    香港六合彩.hk 福建快三开奖结果表 广西快三现场直播开奖 北京时时彩5分开奖结果 香港赛马会官方网年开奖记录 一码中特万人见证 双色球17051英豪红球 查下福建快三开奖结果 喜乐彩2019历史数据 浙江体育彩票排列三走势图 乒乓球教学 王中王算盘四肖中特4887 重庆开奖直播 湖北快3开奖结果透露 北京赛车pk10平刷王