zoukankan      html  css  js  c++  java
  • 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了。

  • 相关阅读:
    装机软件
    关于软件开发
    Jquery中ajax基本语法
    jQuery+Ajax+PHP滚动加载
    ajax无刷新分页
    PHPExcel数据导出到Excel文件
    Linux下启动,停止,重启Nginx、Mysql、PHP
    mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication.
    linux系统给普通用户添加sudo权限
    Linux下全局安装composer方法
  • 原文地址:https://www.cnblogs.com/puzi0315/p/13337279.html
Copyright © 2011-2022 走看看