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 謂詞)

