Asp.Net Core獲取請求上下文HttpContext

注:特別說明當前版本對應.Net Core2.1意義上框架

1、注入HttpContextAccessor

ASP.NET Core中提供了一個IHttpContextAccessor接口,HttpContextAccessor 默認實現了它簡化了訪問HttpContext。html

它必須在程序啓動時在IServicesCollection中註冊,這樣在程序中就能獲取到HttpContextAccessor,並用來訪問HttpContext。app

services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

 

2、獲取HttpContextAccessor

下面來實際作一個操做,獲取 HttpContextAccessor。框架

新建一個ASP.NET Core Web 應用程序,選擇Web 應用程序。 身份驗證勾選爲不進行身份驗證。ide

而後在HomeController 加入以下代碼:ui

複製代碼
    public class HomeController : Controller
    {
        private IHttpContextAccessor _accessor;
        public HomeController(IHttpContextAccessor accessor)
        {
            _accessor = accessor;
        }
        public IActionResult Index()
        {
            var httpcontext = _accessor.HttpContext;
            return View();
        }
    }
複製代碼

這樣就能獲取到 HttpContextspa

運行之後就能獲取到 HttpContext 對象。上面也說到,必須在程序啓動時注入才能獲取到HttpContextAccessor。code

 

3、實現HttpContext的全局使用。htm

public class MvcContext
{public static IHttpContextAccessor Accessor;
    public static HttpContext GetContext()
    {
        return Accessor.HttpContext;
    }

}

在配置中保存IHttpContextAccessor,用於獲取上下文對象

      public void Configure(IApplicationBuilder app, IHostingEnvironment env,IServiceProvider serp, IHttpContextAccessor  accessor)
        {
            MvcContext.Accessor = accessor; if (env.IsDevelopment())
            {
                app.UseBrowserLink();
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }

            app.UseStaticFiles();
        }

 

更多使用說明能夠參考:http://www.cnblogs.com/linezero/p/6801602.htmlblog

 

更多:

Asp.Net Core 404處理

EF Core中執行Sql語句查詢操做之FromSql,ExecuteSqlCommand,SqlQuery

Asp.Net Core IIS發佈後PUT、DELETE請求錯誤405.0 - Method Not Allowed 由於使用了無效方法(HTTP 謂詞)

相關文章
相關標籤/搜索