zoukankan      html  css  js  c++  java
  • .net core 中间件

    中间件是用于组成应用程序管道来处理请求和响应的组件。管道内的每一个组件都可以选择是否将请求交给下一个组件、并在管道中调用下一个组件之前和之后执行某些操作。请求委托被用来建立请求管道,请求委托处理每一个 HTTP 请求。

    请求委托通过使用 IApplicationBuilder 类型的 RunMap 以及 Use 扩展方法来配置,并在 Startup 类中传给 Configure 方法 。每个单独的请求委托都可以被指定为一个内嵌匿名方法,或其定义在一个可重用的类中。这些可重用的类被称作 中间件 或 中间件组件。每个位于请求管道内的中间件组件负责调用管道中下一个组件,或适时短路调用链。

    具体如图:

    编写中间件

    1.新建类

    using System.Threading.Tasks;
    using Microsoft.AspNetCore.Http;
    using Microsoft.Extensions.Logging;
    
    namespace MiddlewareSample
    {
        public class RequestLoggerMiddleware
        {
            private readonly RequestDelegate _next;
            private readonly ILogger _logger;
    
            public RequestLoggerMiddleware(RequestDelegate next, ILoggerFactory loggerFactory)
            {
                _next = next;
                _logger = loggerFactory.CreateLogger<RequestLoggerMiddleware>();
            }
    
            public async Task Invoke(HttpContext context)
            {
                _logger.LogInformation("Handling request: " + context.Request.Path);
                await _next.Invoke(context);
                _logger.LogInformation("Finished handling request.");
            }
        }
    }

    2.扩展方法

    public static class RequestLoggerExtensions
    {
        public static IApplicationBuilder UseRequestLogger(this IApplicationBuilder builder)
        {
            return builder.UseMiddleware<RequestLoggerMiddleware>();
        }
    }

    3.使用

    public void ConfigureLogMiddleware(IApplicationBuilder app,
        ILoggerFactory loggerfactory)
    {
        app.UseRequestLogger();
    }
  • 相关阅读:
    完全分布式安装HBase
    HDFS常用的文件API操作
    启动HBase后遇到的一个问题
    HBase常用的数据库API操作
    HBase数据库常用操作命令
    Hive安装
    eclipse中配置hadoop开发环境
    Hadoop小程序倒排索引
    我学习设计模式的一些所想所得
    架构之路实战项目记录(二) 忘记数据库 开始抽象
  • 原文地址:https://www.cnblogs.com/zmaiwxl/p/9067538.html
Copyright © 2011-2022 走看看