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


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

 

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

一、注入HttpContextAccessor

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

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

services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

 

二、獲取HttpContextAccessor

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

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

然后在HomeController 加入如下代碼:

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

這樣就能獲取到 HttpContext

運行以后就能獲取到 HttpContext 對象。上面也說到,必須在程序啟動時注入才能獲取到HttpContextAccessor。

 

三、實現HttpContext的全局使用。

復制代碼
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.html

更多:

Asp.Net Core 404處理

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

Asp.Net Core IIS發布后PUT、DELETE請求錯誤405.0 - Method Not Allowed 因為使用了無效方法(HTTP 謂詞)


免責聲明!

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



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