• asp.net core 3.1 公共类里获取 HttpContext 的方法


    场景:

    在开发web项目的时候,写一些通用的公共方法是很常见的操作,而一些关于Http的操作,经常会用到HttpContext这个对象。

    若是在Controller里,我们操作就很简单,可以使用注入的方法直接使用:,比如以下代码:

    public class HomeController : Controller
    {
        private IHttpContextAccessor _accessor;
        public HomeController(IHttpContextAccessor accessor)
        {
            _accessor = accessor;
        }
        [HttpGet]
        public IActionResult Index(int? id)
        {
            var httpcontext = _accessor.HttpContext;
    
            return View(httpcontext);
        }
    
    }

    详情请看这篇博客:https://www.cnblogs.com/whuanle/p/10077339.html

    我们现在要自己封装方法,步骤如下:

    首先要知道 HttpContext 是 在 IHttpContextAccessor的里面可以获取;

    那么我们就要开发一个公共类,代码如下:

        /// <summary>
        /// 沐雪微淘小程序商城
        /// HttpContext公共类
        /// </summary>
        public class AppHttpContext
        {
            private static IHttpContextAccessor m_httpContextAccessor;
            public static void Configure(IHttpContextAccessor httpContextAccessor)
            {
                m_httpContextAccessor = httpContextAccessor;
    
            }
            public static HttpContext Current
            {
                get
                {
                    return m_httpContextAccessor.HttpContext;
                }
            }
            public static T GetSerivce<T>()
            {
                return (T)Current.RequestServices.GetService(typeof(T));
            }
    
    
            public static dynamic GetSerivce(Type type)
            {
                return (dynamic)Current.RequestServices.GetService(type);
            }
            public static bool IsPost
            {
                get
                {
                    if (m_httpContextAccessor.HttpContext.Request.Method.ToLower().Equals("post"))
                    {
                        return true;
                    }
                    return false;
                }
            }
            public static bool IsAjax
            {
                get
                {
                    string sheader = Current.Request.Headers["X-Requested-With"];
                    return (sheader != null && sheader == "XMLHttpRequest") ? true : false;
    
                }
            }
    
        }

    这里用静态类静态方法;IHttpContextAccessor对象需要在程序启动的时候注册进来;需要在Statup里写一行代码,如下:

                //添加httpcontext类
                AppHttpContext.Configure(services.BuildServiceProvider().GetRequiredService<IHttpContextAccessor>());

    ok了。

  • 相关阅读:
    Oracle的function存储函数简单实例
    Java保留小数点后两位,解决精度丢失问题
    天津贷款买房提取公积金相关问题
    Springboot配置连接两个数据库
    JDK8:Lambda根据 单个字段、多个字段,分组求和
    原生Ajax方式请求后端导出Excel,在浏览器页面显示下载Excel表(前端请求带header)
    Java实现 微信小程序 + 消息推送
    Centos7安装docker
    将博客搬至CSDN
    读书笔记——数学之美
  • 原文地址:https://www.cnblogs.com/puzi0315/p/13337279.html
Copyright © 2020-2023  润新知