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
更多:
EF Core中執行Sql語句查詢操作之FromSql,ExecuteSqlCommand,SqlQuery
Asp.Net Core IIS發布后PUT、DELETE請求錯誤405.0 - Method Not Allowed 因為使用了無效方法(HTTP 謂詞)