zoukankan      html  css  js  c++  java
  • Middleware In ASP.NET Core

    中间件简介

    ASP.NET Core 由很多中间件构成,实现了一个HTTP请求管道(pipeline)。

    Request的Response的管道可以看成一个Push Stack 和 Pop Stack。

    在Startup.cs的Configure方法中配置中间件。

    实现一个中间件

    1. 构造函数RequestDelegate参数;
    2. Invoke(HttpContext context)方法;
    using Microsoft.AspNetCore.Http;
    using System.Threading.Tasks;
    using System.Diagnostics;
    using System.IO;
    
    namespace WebAppWithIndividualUserAccounts
    {
        public class ResponseTime
        {
            RequestDelegate _next;
            public ResponseTime(RequestDelegate next)
            {
                _next = next;
            }
    
            public async Task Invoke(HttpContext context)
            {
                var sw = new Stopwatch();
                sw.Start();
    
                await _next(context);
    
                var isHtml = context.Response.ContentType?.ToLower().Contains("text/html");
                if (context.Response.StatusCode == 200 && isHtml.GetValueOrDefault())
                {
                    var body = context.Response.Body;
    
                    using (var streamWriter = new StreamWriter(body))
                    {
                        var txtHtml = $"<footer><div id='process'>Response Time {sw.ElapsedMilliseconds} milliseconds.</div></footer>";
    
                        streamWriter.Write(txtHtml);
                    }
                }
            }
        }
    }
    
    

    注册一个中间件

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
            {
                app.UseMiddleware<ResponseTime>();
                //......
    

    运行

    即可看到效果

  • 相关阅读:
    系统集成项目管理工程师高频考点(第一章)
    2、无重复字符的最长子串
    1、爬楼梯
    webpack起步
    Centos7安装nginx
    Centos7安装nacos
    Centos7安装java和maven
    centos7安装fastDFS
    aop中获取请求消息和属性
    数据库面对高并发的思路
  • 原文地址:https://www.cnblogs.com/pengzhen/p/5757054.html
Copyright © 2011-2022 走看看