zoukankan      html  css  js  c++  java
  • .net core添加自定义中间件小例子

    声明自定义中间件及处理方法

     public class RequestSetOptionsMiddleware
        {
            /// <summary>
            /// 可以处理HTTP请求的函数
            /// </summary>
            private readonly RequestDelegate _next;
    
            public RequestSetOptionsMiddleware(RequestDelegate next)
            {
                _next = next;
            }
    
            /// <summary>
            /// 执行当前自定义中间件的处理
            /// 注意自定义中间件名字必须为Invoke或者InvokeAsync
            /// </summary>
            /// <param name="httpcontext"></param>
            /// <returns></returns>
            public async Task Invoke(HttpContext httpcontext)
            {
                //获取httpcontext请求中的option参数
                var option = httpcontext.Request.Query["option"];
    
                if (!string.IsNullOrWhiteSpace(option))
                {
    
                    httpcontext.Items["option"] = WebUtility.HtmlEncode(option);
                }
    
                await _next(httpcontext);
            }
    
    
        }
      /// <summary>
        /// 继承IStartupFilter接口
        /// </summary>
        public class RequestSetOptionsStartupFilter : IStartupFilter
        {
            /// <summary>
            /// 构造配置
            /// </summary>
            /// <param name="next"></param>
            /// <returns></returns>
            public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
            {
                return builder =>
                {
                    //引用自定义中间件
                    builder.UseMiddleware<RequestSetOptionsMiddleware>();
                    //管道继续运行
                    next(builder);
                };
            }
        }

    在Startup.cs引用自定义中间件:

     public void ConfigureServices(IServiceCollection services)
            {
                services.AddTransient<IStartupFilter, RequestSetOptionsStartupFilter>();
              
            }

    实现效果如下:

    模拟请求

    自定义中间件获取httpcontext并进行相应的处理

    好好学习,天天向上。
  • 相关阅读:
    (转) Linux中profile、bashrc、bash_profile之间的区别和联系
    Ubuntu 安装MyEclipse10
    VMware_ubuntu设置共享文件夹
    (转载)Android出现“Read-only file system”解决办法
    Android 执行 adb shell 命令
    android传感器使用
    Android源码下载和编译过程
    jquery实现的ajax
    转载SQL_trace 和10046使用
    查看Oracle相关日志 ADRCI
  • 原文地址:https://www.cnblogs.com/Zhengxue/p/13273780.html
Copyright © 2011-2022 走看看