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了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM